2012-07-18 89 views
4

我需要将一个字符串保存在与标题不同的Datagrid列中。WPF DataGrid列中的标签属性

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

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

在我看来列的标签属性将解决这个问题,但目前还没有:(

回答

9

在WPF中,你有几乎无限的“标签”性质使用Attached Properties。附加属性可以设置。任何DependencyObject这样的附加属性的一个很好的例子是Grid.Row既然你可以定义他们,你也有命名他们的东西比标签更有意义的可能性

示例代码定义附加属性:。

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" /> 
+0

嘿,谢谢你的回答。你能否提供一个例子,在生成和读取列标签属性时使用它? – 2012-07-18 07:14:48

+0

增加了示例代码。我建议你完全阅读我原来的文章中的链接,它解释了附加依赖属性的核心概念并且有示例。 – 2012-07-18 07:20:29

+0

谢谢Julien,解决了我的问题! – 2012-07-18 07:30:01