WPF工具包中DataGrid单元格文本换行

6

我的WPF数据表格的列是固定宽度的,这意味着行中的长文本被截断了。我该如何让文本换行?

3个回答

8
如果您正在使用DataGridTextColumn,则需要为DataGridTextColumn.ElementStyle定义样式。
<dg:DataGridTextColumn Header="SomeLongText" Binding="{Binding MyText}">
  <dg:DataGridTextColumn.ElementStyle>
    <Style TargetType="TextBlock">
      <Setter Property="TextWrapping" Value="Wrap"/>
    </Style>
  </dg:DataGridTextColumn.ElementStyle>
</dg:DataGridTextColumn>

完整的解释可以在以下网址找到:http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtextcolumn(v=vs.95).aspx


5
您可以使用启用了文本换行的 Textblock 替换单元格。例如:
<dg:DataGridTemplateColumn Header="Description" Width="*">
   <dg:DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
           <TextBlock Text="{Binding Description}" TextWrapping="WrapWithOverflow"/>                                    
       </DataTemplate>
   </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>

1
如果您的DataGridTextColumn是在代码中创建的,您可以通过以下方式设置样式和setter:
        _dataGridTextColumn.MaxWidth = 550;
        _dataGridTextColumn.ElementStyle = new System.Windows.Style(typeof(TextBlock));
        _dataGridTextColumn.ElementStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));

这将导致_dataGridTextColumn内的文本像在TextBlock中一样换行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接