WPF/附加属性 - 请解释为什么它有效

标签 wpf dependency-properties attached-properties

请帮助我了解值“ABC”的存储位置。当我运行内存分析器时,我没有看到任何 MyClass 实例,事实上绑定(bind)有效,并且 GroupBox.Header 获取值 ABC...
感谢您的帮助。

<GroupBox Header="{Binding Path=(local:MyClass.Tag1), RelativeSource={RelativeSource Self}}"  
          local:MyClass.Tag1="ABC" />
public class MyClass
{
    public static readonly DependencyProperty Tag1Property = DependencyProperty.RegisterAttached("Tag1", typeof(object), typeof(MyClass), new UIPropertyMetadata(null));
    public static object GetTag1(DependencyObject obj)
    {
        return obj.GetValue(Tag1Property);
    }
    public static void SetTag1(DependencyObject obj, object value)
    {
        obj.SetValue(Tag1Property, value);
    }
}

最佳答案

依赖属性在内部维护一个字典。使用稀疏存储机制来存储值。这些属性在类级别关联 - 是静态的。值 ABC 以键值对的形式存储在字典中

关于WPF/附加属性 - 请解释为什么它有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270764/

相关文章:

wpf - 在哪里可以找到免费的WPF Datagrid样式?

wpf - 双击功能区时禁用最小化或最大化

grails - config.groovy在grails中带有.property文件

c# - TextBlock 附加属性绑定(bind)

附加属性上的 WPF 触发器不起作用

wpf - WrapPanel 作为 ItemsControl 的 ItemPanel

c# - 在 C# View 模型中访问 XAML 对象

设置依赖属性后调用的 C# 函数

c# - WPF:无法识别或无法从 XAML 访问整数 CLR 属性

.net - WPF 中的依赖属性和附加属性有什么区别?