6

我的 WPF 数据网格的列是固定宽度的,这意味着行中的长文本被截断。我怎样才能让文本换行?

4

3 回答 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找到

于 2011-10-19T21:48:04.443 回答
5

您可以将单元格替换为启用了 Textwrapping 的 Textblock。IE

<dg:DataGridTemplateColumn Header="Description" Width="*">
   <dg:DataGridTemplateColumn.CellTemplate>
       <DataTemplate>
           <TextBlock Text="{Binding Description}" TextWrapping="WrapWithOverflow"/>                                    
       </DataTemplate>
   </dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
于 2009-12-24T22:29:36.947 回答
1

如果您的 DataGridTextColumn 是在后面的代码中创建的,您可以通过这种方式设置样式和设置器:

        _dataGridTextColumn.MaxWidth = 550;
        _dataGridTextColumn.ElementStyle = new System.Windows.Style(typeof(TextBlock));
        _dataGridTextColumn.ElementStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));

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

于 2014-05-02T18:57:48.413 回答