4

ヘッダーとは異なる Datagrid 列内に文字列を保存する必要があります。

これが必要なのは、Datagrid を動的に生成し、生成中に列ヘッダーを変換したいからです。次に、XAML 全体を ContentControl にバインドします。

ここまでは問題ありません...しかし、列を並べ替えてサイズを変更したいので、あとでそれらを検索する必要があります。このためには、元の (翻訳されていない) ColumnHeader が必要です。

私の意見では、列の Tag プロパティはこの問題を解決しますが、:(

4

1 に答える 1

10

WPFでは、添付プロパティを使用して、事実上無制限の「タグ」プロパティを使用できます。添付プロパティは、任意のに設定できます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" />
于 2012-07-18T07:07:42.507 に答える