我有DataGridControl,它根据DB的配置动态创建列。在某些情况下我需要换行文本。这背后的代码看起来像这样:
public class MyDataGridControl : DataGrid
{
...
private void CreateColumns()
{
foreach (var colDef in GridDefinition.Columns)
{
...
dataGridColumn = new DataGridTextColumn() { Binding = new Binding(colDef.Name) };
...
//Wrap
if(WrapColumn != null && columnDefinition.Name.Equals(WrapColumn))
{
dataGridColumn.CellStyle.Setters.Add(new Setter(TextBlock.TextWrappingProperty, TextWrapping.Wrap));
}
...
}
}
...
}
我的问题是设置TextBlock.TextWrappingProperty不起作用。文字没有换行,我找不到原因。上面的网格控件没有任何WPF代码。有什么我想念的吗?
答案 0 :(得分:0)
TextBlock.TextWrapping
不是附加财产,因此您无法将其应用于DataGridTextColumn
,仅适用于TextBlock
。我能够使用DataGridTemplateColumn
将文本包装到DataGrid中。我只是在TextBlock
中添加CellTemplate
并将TextWrapping
放在其上。
XAML看起来像这样:
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock
TextWrapping="Wrap"
Text="{Binding Name}"
/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
我从未以编程方式创建DataTemplate
。看起来像this question may be doing it。