Ответ 1
Вы можете попробовать создать шаблоны ячеек с TextBlock
с включенным включением текста.
Что нужно сделать, чтобы получить DataGrid WPF с ячейками, которые обертывают текст, а не сокращают его?
Прямо сейчас, когда текст больше и не помещается в столбец, текст усекается, и пользователи не могут видеть его значение, поскольку свойство DataGrid IsReadOnly истинно. Я хочу, чтобы текст в ячейках был обернут, а высота ячейки (NO CELL WIDTH) увеличила количество, необходимое для отображения всего текста.
Вы можете попробовать создать шаблоны ячеек с TextBlock
с включенным включением текста.
Спасибо за вашу помощь @HB, это помогло мне (выравнивание необязательно):
<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>
Я сделал нечто похожее на решение Д. Росадоса. Однако Mine можно использовать повторно, если у вас больше столбцов, требующих обертывания.
<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>