【问题标题】:Tag Property in WPF DataGrid ColumnWPF DataGrid 列中的标记属性
【发布时间】:2012-07-17 03:57:47
【问题描述】:

我需要在与标题不同的 Datagrid 列中保存一个字符串。

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

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

在我看来,列的 Tag 属性可以解决这个问题,但是没有:(

【问题讨论】:

    标签: wpf datagrid tags datagridcolumn


    【解决方案1】:

    在 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" />
    

    【讨论】:

    • 您好,谢谢您的回答。您能否提供一个在生成和读取列标签属性时使用它的示例?
    • 添加了示例代码。我建议你完整阅读我原帖中的链接,它解释了附加依赖属性的核心概念并有示例。
    • 我正在尝试在 DataGridColumn 中添加标签属性,但我无法正常工作,您能帮我解决这个问题吗...
    • 我在尝试将其应用于TargetType="DataGridRow"RowStyle 时遇到了一些麻烦 - 它抱怨将Property 设置为SomeClass.Tag 为空。
    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 2014-10-05
    • 2011-10-15
    • 1970-01-01
    • 2023-03-29
    • 2012-04-03
    • 1970-01-01
    • 2021-04-11
    相关资源
    最近更新 更多