WPF DataGrid列中的标记属性

Joh*_*zek 4 tags wpf datagrid datagridcolumn

我需要在一个不同于Header的Datagrid列中保存一个字符串.

这是必需的,因为我动态生成Datagrid并希望在生成它们时转换列标题.然后我将整个XAML绑定到ContentControl.

没有问题,直到这里...但我想重新排序和调整列的大小,所以我需要在afterwoods之后查找它们.为此,我需要原始(未翻译)ColumnHeader.

在我看来,列的Tag属性将解决这个问题,但没有:(

Jul*_*ain 10

在WPF中,通过使用附加属性,您几乎可以无限制地使用"标记" 属性.任何附属物都可以设置DependencyObject.这种附属财产的一个很好的例子是Grid.Row.既然您可以定义它们,那么您也可以将它们命名为比Tag更有意义的东西.

用于定义附加属性的示例代码:

public static class SomeClass {

    public static readonly DependencyProperty TagProperty = DependencyProperty.RegisterAttached(
        "Tag",
        typeof(object),
        typeof(SomeClass),
        new FrameworkPropertyMetadata(null));

    public static object GetTag(DependencyObject dependencyObject) {
        return dependencyObject.GetValue(TagProperty);
    }

    public static void SetTag(DependencyObject dependencyObject, object value) {
        dependencyObject.SetValue(TagProperty, value);
    }

}
Run Code Online (Sandbox Code Playgroud)

用法:

<DataGridColumn SomeClass.Tag="abc" />
Run Code Online (Sandbox Code Playgroud)