My WPF datagrid's columns are fixed width, which means long text in the rows are cut off. How can I have the text wrap?
可以将文章内容翻译成中文,广告屏蔽插件可能会导致该功能失效(如失效,请关闭广告屏蔽插件后再试):
问题:
回答1:
If you are using a DataGridTextColumn, you need to define the Style for the 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>
Full explination can be found at the following http://msdn.microsoft.com/en-us/library/system.windows.controls.datagridtextcolumn(v=vs.95).aspx
回答2:
You can replace the cell with a Textblock with Textwrapping enabled. i.e.
<dg:DataGridTemplateColumn Header="Description" Width="*">
<dg:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding Description}" TextWrapping="WrapWithOverflow"/>
</DataTemplate>
</dg:DataGridTemplateColumn.CellTemplate>
</dg:DataGridTemplateColumn>
回答3:
If your DataGridTextColumn is being created in the code behind you can set the style and setters this way:
_dataGridTextColumn.MaxWidth = 550;
_dataGridTextColumn.ElementStyle = new System.Windows.Style(typeof(TextBlock));
_dataGridTextColumn.ElementStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));
This will cause the text inside the _dataGridTextColumn to wrap as it would inside a TextBlock.