2012-07-18 49 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