我需要在与标题不同的 Datagrid 列中保存一个字符串。
这是必需的,因为我动态生成 Datagrid 并希望在生成列标题时翻译它们。然后我将整个 XAML 绑定到 ContentControl。
到这里为止没问题......但我想重新排序和调整列的大小,所以我需要在后面查找它们。为此,我需要原始(未翻译)ColumnHeader。
在我看来,列的 Tag 属性可以解决这个问题,但是没有:(
我需要在与标题不同的 Datagrid 列中保存一个字符串。
这是必需的,因为我动态生成 Datagrid 并希望在生成列标题时翻译它们。然后我将整个 XAML 绑定到 ContentControl。
到这里为止没问题......但我想重新排序和调整列的大小,所以我需要在后面查找它们。为此,我需要原始(未翻译)ColumnHeader。
在我看来,列的 Tag 属性可以解决这个问题,但是没有:(
在 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" />