我竭力要找到所使用的财产继承树(或传承语境)足够的信息DependencyObject
和DependencyProperty
.
我想使用DependencyProperty
典型WPF页面之外的值继承功能,这样对象A就是逻辑父对象B,因此分配给对象A上的属性的值将自动传播到对象B,除非它已在本地set(有点像FlowDirection
WPF中的属性).
如果对象A和对象B是从DependencyObject
,并且不是a的子节点UIElement
(换句话说,对象A是它自己的根),那么如何建立逻辑树以便DependencyProperty
理解B是A的子节点?
该 Hillberg可冻结计谋以及技巧的约什-史密斯的袋子不完全是我要找的.我不希望从现有的元素树检索属性...我要创造我自己的,非可视元素树...即有超过的传承上下文控制.
有谁知道这个知识藏在哪里?
经过大量的研究和混淆源代码DependencyObject
,这里是简短的回答:
的InheritenceContext
(其揭示了一个实例的逻辑父属性)为(等的有用实施90% DependencyObject
)标记为内部的,从而从所有代码保持隐藏WindowsBase.dll中的外
可以使用反射来设置_contextParent
字段,以及调用这些隐藏的方法来设置InheritenceContext
,但在一天结束时它不是一个干净的解决方案.
在搜索DependencyObject
源代码之后,我必须说我没有留下深刻的印象.DependencyObject
可以而且应该是一个非常干净,无处不在,可重复使用的课程.相反,它在结构和行为上与它的继承者绑定,甚至包含特定的常量,字段,方法和解决方法,以帮助Freezable与其他子类共存,这不仅偏离了良好的OO设计,而且在WPF框架之外,它还使一个完美无缺的类完全无法使用.