Подтвердить что ты не робот

Как получить WPF Datagrid с ячейками, которые обертывают текст, а не обрезают его?

Что нужно сделать, чтобы получить DataGrid WPF с ячейками, которые обертывают текст, а не сокращают его?

Прямо сейчас, когда текст больше и не помещается в столбец, текст усекается, и пользователи не могут видеть его значение, поскольку свойство DataGrid IsReadOnly истинно. Я хочу, чтобы текст в ячейках был обернут, а высота ячейки (NO CELL WIDTH) увеличила количество, необходимое для отображения всего текста.

4b9b3361

Ответ 1

Вы можете попробовать создать шаблоны ячеек с TextBlock с включенным включением текста.

Ответ 2

Спасибо за вашу помощь @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>

Ответ 3

Я сделал нечто похожее на решение Д. Росадоса. Однако 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>

Ответ 4

Еще один простой способ настройки переноса текста для столбцов "Редактирование" и "Текстовый 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>