C#DataGridTextColumn换行符

时间:2016-12-11 17:23:43

标签: c# wpf datagrid line-breaks datagridtextcolumn

必须有一个简单的解决方案,但我找不到它。我有一个DataGrid与DataGridTextColumns包含数据。这工作正常。我似乎没有得到单元格中的String来换行,而是所有内容都在一行中(无论字符串有多长)。

dataGrid.IsReadOnly = true;
dataGrid.AutoGenerateColumns = false;
dataGrid.ItemsSource = ConvertListIntoPlantViewModel(lList);

DataGridTextColumn textColumn1 = new DataGridTextColumn();
DataGridTextColumn textColumn2 = new DataGridTextColumn();
DataGridTextColumn textColumn3 = new DataGridTextColumn();
textColumn3.MaxWidth = 200;

textColumn1.Header = "Name";
textColumn1.Binding = new Binding("Name");
textColumn2.Header = "Type";
textColumn2.Binding = new Binding("Type");
textColumn3.Header = "Info";
textColumn3.Binding = new Binding("Information");

dataGrid.Columns.Add(textColumn1);
dataGrid.Columns.Add(textColumn2);
dataGrid.Columns.Add(textColumn3);

假设我想创建Text,它最终在textColumn3中在单元格的末尾(200宽)进行换行。我该如何实现这一目标?必须有一个可以设置的简单样式元素,对吗?我找不到它。

帮助将不胜感激,谢谢!

1 个答案:

答案 0 :(得分:2)

  

必须有一个可以设置的简单样式元素,对吗?我找不到它。

是的,您可以将列的ElementStyle属性设置为以下样式以包装文本:

<Style TargetType="TextBlock">
    <Setter Property="TextWrapping" Value="Wrap" />
</Style>

您可以使用XamlReader.Parse方法以编程方式创建Style:

string xaml = "<Style xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\" TargetType=\"TextBlock\"><Setter Property=\"TextWrapping\" Value=\"Wrap\"/></Style>";
Style style = System.Windows.Markup.XamlReader.Parse(xaml) as Style;

DataGridTextColumn textColumn1 = new DataGridTextColumn();
textColumn1.ElementStyle = style;