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