(我对这个概念完全陌生,所以我可能会问非常基本的问题。)
使用以下代码注册依赖属性:
public static DependencyProperty Register(string name, Type propertyType, Type ownerType, PropertyMetadata typeMetadata);
从逻辑上讲,它只是将属性名称与所有者类型相关联。
因此,如果我有所有者类型的多个实例,并且每个实例将 DP 设置为不同的值。
如何存储这些值?
更新 1 - 2013 年 10 月 30 日上午 10:04
我从这里读到了有关附加财产的信息:http://wpftutorial.net/DependencyProperties.html http://wpftutorial.net/DependencyProperties.html
附加属性
附加属性是一种特殊的 DependencyProperties。他们
允许你将一个值附加到一个什么都不知道的对象上
关于这个值。
这个概念的一个很好的例子是布局面板。每个布局面板
需要不同的数据来对齐其子元素。画布需要顶部
左图,DockPanel 需要 Dock 等。因为您可以编写自己的
布局面板,列表是无限的。所以你看,这是不可能的
所有 WPF 控件都具有所有这些属性。
解决方案是附加属性。它们由控件定义
需要特定上下文中另一个控件的数据。为了
例如,由父布局面板对齐的元素。
所以在下面的代码片段中:
<Canvas>
<Button Canvas.Top="20" Canvas.Left="20" Content="Click me!"/>
<Button Canvas.Top="40" Canvas.Left="20" Content="Click me!"/>
</Canvas>
显然我们不能给出所有的对齐属性,例如Top, Left到按钮。所以 Canvas 定义了这样的属性,它们是“attached” 到按钮控件。
当 Canvas.Top 在 XAML 中被指定为 Button 的“属性”时,它将调用 Canvas 类型中定义的 SetTop() 方法。并且 Button 作为元素参数传入。我认为这就是 Canvas 知道哪个 Button 使用哪个 Top 值的方式。
public static void SetTop(UIElement element, double length);
但我不明白为什么附加属性必须是依赖属性?他们之间有什么联系呢?
Thanks!