4

我需要在与标题不同的 Datagrid 列中保存一个字符串。

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

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

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

4

1 回答 1

10

在 WPF 中,您可以使用Attached Properties获得几乎无限的“标签”属性。可以在任何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);
    }

}

用法 :

<DataGridColumn SomeClass.Tag="abc" />
于 2012-07-18T07:07:42.507 回答