WPF附加DependencyProperty - 本地值如何解决?

时间:2014-04-03 06:47:03

标签: wpf dependency-properties

关于未附加的DependencyProperty,这是我的理解 - 如果我错了,因为我是初学者,请纠正我 - 解决本地价值的过程是基于首先搞清楚,每一个给定DependencyProperty,DependencyProperty的关键是什么。密钥是哈希码或一些唯一值,表示DependencyProperty的所有者的类型以及属性的名称(例如,背景)。

一旦计算出该密钥,值解析过程就会查找该密钥的mtach,其中包含属于父类型的字典,该字典包含DependencyProperty的密钥(正如上一句中所述)和设置的相应值本地使用与所讨论的DependencyProperty相对应的DependencyProperty Set包装器(例如,SetBackground)。如果在字典中找到键,则认为本地值已解析,字典中的值dound是我们查找的值。

但是,如果在每个所有者控件之前没有使用Set包装器,使得前一段中提到的字典(DependencyProperty键和值)不包含我们寻找的键,则值解析过程继续向上移动在逻辑层次结构中到下一个父控件并对父控件应用相同的解析过程。也就是说,在属于父控件的键/值字典中寻找由类型和属性的相同名称组成的键。如果这次发现,那么解决方案就完成了;否则,本地值解析进入逻辑层次结构中的下一个控件,并且该过程自身重复,直到DependencyProperty的值被解析。如果没有找到值,则采用不同的确定方式,而不依赖于在本地设置值。

这或多或少是未附加的DependencyProperty的过程。我想知道是否有人能告诉我每个这样的财产的价值解析过程(本地价值)是什么。我假设键值字典是驻留在外部控件中的字典(即,不是DependencyProperty所在的控件),是否正确?这可能是存储值的字典(使用Set [Proeprtyname])相对于DependencyProperty,其父级是外部控件(必须是静态的)。

如果有人能够更多地了解附属依赖属性,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

附加属性不会级联。也就是说,如果您没有在控件上显式设置值,那么它默认为属性定义中定义的DefaultValue