テキストを切り捨てるのではなく折り返すセルを持つWPF DataGridを取得するには、何をする必要がありますか?
現在、テキストが大きく、列に収まらない場合、テキストは切り捨てられ、DataGridのIsReadOnlyプロパティがtrueであるため、ユーザーはその値を見ることができません。私が欲しいのは、セル内のテキストが折り返され、セルの高さ(セル幅なし)がすべてのテキストを表示するのに必要な量を増やしたことです。
テキストの折り返しが有効になっているTextBlock
を使用してセルをテンプレート化することができます。
@ 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.Rosadosソリューションに似たものを作成しました。ただし、ラッピングが必要な列がさらにある場合は、鉱山を再利用できます。
<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>
編集およびテキストDataGrid列のテキストラップを設定する別の簡単な方法は、BindingプロパティとTextWrappingプロパティを次のように指定することです。
<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>