WPF动态设置文本换行属性

时间:2016-11-03 15:49:05

标签: c# .net wpf

我有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代码。有什么我想念的吗?

1 个答案:

答案 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