Pra*_*ran 2 wpf dependency-properties .net-4.0 silverlight-4.0 c#-4.0
我用一个DP创建了一个用户控件.现在我在我的页面中使用该UC 5次,我的问题是,DP是一个静态属性,所以它只会创建一个实例.现在这个值将如何保存5个不同的控件?
每种类型都会创建依赖项属性,并且可以根据需要进行自定义.因此,如果您的屏幕有20个按钮,那么您所占用的属性的存储空间就像一个按钮一样好.
DependencyObject维护两个HashTable成员:
private static Hashtable _staticProperties = new Hashtable();
private Hashtable properties = new Hashtable();
静态成员存储DP的默认值(对于所有类型只有一个)和非静态成员存储已更改的值.
当你调用dp的SetValue方法时,你基本上是在非静态HashTable中添加一个项目.当调用GetValue时,DependencyObject首先检查非静态HashTable是否具有密钥; 如果找到然后返回值,否则它返回静态成员的值(这是默认值)
所以,
DP在更改之前不会保留任何值.
DP是静态的,因此您的应用可以观察其值; 这就是你注册DP而不是实例化的原因.
DP 在DependencyObject类中声明的HashTable中保存值,您需要在注册一个时传递所有者的类型.
您也可以在我的博客上看到它:Dependency Property如何保持价值
归档时间: |
|
查看次数: |
1449 次 |
最近记录: |