programing

텍스트를 잘라내는 대신 줄바꿈하는 셀을 사용하여 WPF 데이터 그리드를 얻는 방법은 무엇입니까?

css3 2023. 4. 10. 22:06

텍스트를 잘라내는 대신 줄바꿈하는 셀을 사용하여 WPF 데이터 그리드를 얻는 방법은 무엇입니까?

텍스트를 잘라내는 대신 줄바꿈하는 셀을 사용하여 WPF DataGrid를 얻으려면 어떻게 해야 합니까?

텍스트가 더 크고 열에 맞지 않으면 DataGrid의 IsReadOnly 속성이 참이기 때문에 텍스트가 잘리고 사용자가 값을 볼 수 없습니다.원하는 것은 셀의 텍스트를 랩하고 셀 높이(NO CELL WIDE)를 높여 모든 텍스트를 표시하는 것입니다.

@H.B.를 이용해 주셔서 감사합니다(정렬은 옵션입니다).

<DataGrid.Columns>               
    <DataGridTextColumn Header="Wrapped & centered" Binding="{Binding field}">
        <DataGridTextColumn.ElementStyle>
             <Style>                            
                 <Setter Property="TextBlock.TextWrapping" Value="Wrap" />
                 <Setter Property="TextBlock.TextAlignment" Value="Center"/>
             </Style>
         </DataGridTextColumn.ElementStyle>
    </DataGridTextColumn>
</DataGrid.Columns>

저는 D와 비슷한 것을 만들었습니다.로자도스 솔루션하지만 랩핑이 필요한 컬럼이 더 있으면 내 컬럼을 재사용할 수 있습니다.

<UserControl.Resources>
    <Style TargetType="{x:Type TextBlock}" x:Key="WrapText">
        <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
</UserControl.Resources>

<DataGrid.Columns>
    <DataGridTextColumn IsReadOnly="False" Header="Address" 
     Binding="{Binding Address}" ElementStyle="{StaticResource WrapText}" Width="150"/>
</DataGrid.Columns>

셀을 템플릿으로 만들 수 있습니다.TextBlock문자 변환이 유효하게 되어 있습니다.

여기에 다른 솔루션과 함께 추가되는 다른 솔루션이 있습니다.

<DataGridTemplateColumn Header="MyFieldName" Width="150" >
  <DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <TextBlock Text="{Binding MyField}"  TextWrapping="Wrap">
        <TextBlock.ToolTip>
          <TextBlock Text="{Binding MyField}"  />
        </TextBlock.ToolTip>
      </TextBlock>
    </DataTemplate>
  </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

편집 및 텍스트 데이터 그리드 열에 텍스트 줄 바꿈을 설정하는 또 다른 간단한 방법은 다음과 같이 바인딩 속성 및 텍스트 줄 바꿈 속성을 지정하는 것입니다.

<DataGridTemplateColumn x:Name="ColumnName" Header="Column Header Goes Here">
        <DataGridTemplateColumn.CellEditingTemplate>
                <DataTemplate>
                         <TextBox Text="{Binding Path=DataBoundProperty, Mode=TwoWay}" TextWrapping="Wrap"/>
                </DataTemplate>
        </DataGridTemplateColumn.CellEditingTemplate>
        <DataGridTemplateColumn.CellTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=DataBoundProperty, Mode=OneWay}" TextWrapping="Wrap"/>
            </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

언급URL : https://stackoverflow.com/questions/4671836/how-get-a-wpf-datagrid-with-cells-that-wrap-text-instead-of-truncating-it