【发布时间】:2010-12-02 23:04:04
【问题描述】:
我的 WPF 数据网格的列是固定宽度的,这意味着行中的长文本被截断。如何让文本换行?
【问题讨论】:
标签: wpf datagrid cell word-wrap
我的 WPF 数据网格的列是固定宽度的,这意味着行中的长文本被截断。如何让文本换行?
【问题讨论】:
标签: wpf datagrid cell word-wrap
如果您使用的是 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找到
【讨论】:
您可以将单元格替换为启用了 Textwrapping 的 Textblock。 即
<dg:DataGridTemplateColumn Header="Description" Width="*">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" TextWrapping="WrapWithOverflow"/>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
【讨论】:
如果您的 DataGridTextColumn 是在后面的代码中创建的,您可以这样设置样式和设置器:
_dataGridTextColumn.MaxWidth = 550;
_dataGridTextColumn.ElementStyle = new System.Windows.Style(typeof(TextBlock));
_dataGridTextColumn.ElementStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));
这将导致 _dataGridTextColumn 内的文本像在 TextBlock 内一样换行。
【讨论】: