WPF DataGridTextColumn 和标签

WPF DataGridTextColumn and Tag

我有一个定义了多个 DataGridTextColumn 的数据网格。

我需要使用文本块的标签 属性。我在 DataGridTextColumn 上找不到它。

我找到了一个可行的解决方法,即我在其中声明文本块的 DataTemplateColumn,在这种情况下我可以访问标签 属性:

<DataGridTemplateColumn Header="Column with Tag accessible">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock Tag="{Binding Variable1Name}"
                       Text="{Binding Variable2Name}" />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

但是,如果我可以使用 DataGridTextColumn 获得相同的结果,那就太好了。有什么想法吗?

It would be great however if I could achieve the same result with the DataGridTextColumn.

你不能,因为 DataGridTextColumn 没有你可以设置的 Tag 属性。

不清楚为什么您需要设置 Tag 属性,但如果您不想为每列创建 DataGridTemplateColumnCellTemplate ,您可以创建自定义 DataGridTextColumn:

public class CustomDataGridTextColumn : DataGridTextColumn
{ 
    protected override FrameworkElement GenerateElement(DataGridCell cell, object dataItem) 
    { 
        FrameworkElement fe = base.GenerateElement(cell, dataItem);
        if (fe is TextBlock textBlock)
        { 
            textBlock.SetBinding(TextBlock.TagProperty, new Binding(TagPropertyName));  //use TagProperty here
        }
        return fe;
    }

    public string TagPropertyName { get; set; }
}

然后你只需将 XAML 中的内置 DataGridTextColumn 替换为这个 XAML:

<local:CustomDataGridTextColumn Binding="{Binding Variable2Name}" TagPropertyName="Variable1Name" />