依赖属性是类级别或对象级别

时间:2013-11-09 12:42:22

标签: c# wpf wpf-controls dependency-properties

我正在摸索着解依赖属性。

我所拥有的查询如下:

由于Depenedency属性声明为static,static表示类级属性,因此只会创建单个实例,并且所有对象都将共享同一个对象。

我有一个用户控件,我已将依赖属性IsHighlighted添加到该用户控件。 这个依赖属性绑定到某个视图模型属性,我已经为依赖项属性值更改注册了一个回调。因此,只要有人更改了视图模型属性,就会调用依赖项属性回调,如果value为true,它将启动动画,因为它是布尔值。

现在,我创建了5个对象视图,当我将object1的viewmodel属性设置为true时,动画将针对最后一个节点对象5而不是对象1运行。视图模型的属性是非静态的。

我很困惑将为每个对象创建依赖属性,或者它对所有对象都是单一的。

如果它对所有对象都是单一的,那么跟踪我需要运行模拟的用户控件属性中的更改的方法是什么,因为对于用户控件中的正常CLR属性,不会调用任何更改处理程序。

要点: 依赖项属性是在类级别或对象级别创建的。 如果它是在类级别创建的,因为它被声明为static,那么创建一个属于对象级别(非静态)的属性的方法是什么,但它不会对正常的CLR propety进行任何值更改回调。那么如何做到这一点。

1 个答案:

答案 0 :(得分:0)

当你看一下如何定义一个依赖属性时,你很快就会注意到它不是一个普通的静态属性,它更多的是通过设置元数据来描述属性,而不是像简单的常规静态那样分配纯值属性。该元数据正在DependencyObjects中使用(wpf中的每个Control都继承自DependencyObject甚至UserControls。)

每个DependencyObject对该元数据的作用是管理自己的依赖属性值。

这就是object5只改变了值而不是每个对象的方式。

我希望你的照片现在更加清晰。

顺便说一句,我也参考了用户nit给你的链接。

Why dependency properties in WPF has to be Static

去看看。