捕获对父视觉树的更改

时间:2015-07-02 14:36:47

标签: c# .net wpf data-binding visual-tree

在WPF FrameworkElement中,如何捕获从根到FrameworkElement的可视树路径的任何更改?,即FrameworkElement时,或其任何父母,是否被添加到视觉树的另一个分支,从中移除或移动到另一个分支?

  • 我一直在寻找适当的事件,但是FrameworkElement有一个OnVisualParentChanged method,它没有提供一个相关事件,即可以在没有子类化框架元素的情况下注册处理程序。因此,这不能应用于任意的,已经实例化的FrameworkElement s。
  • 理论上,A RelativeSource绑定应该对我有所帮助,但为了实现这一点,我已经需要知道我正在寻找哪个父节点(什么类型,什么级别),但事实并非如此(见下文)。

用例对于this other question,一个有希望的可能解决方案将涉及使用与FrameworkElement相关的当前NameScope。可以从NameScope attached property检索适当的NameScope实例,但不为树中的每个节点设置它,仅针对从control templates和{{3}构造的可视树的根}。

因此,要为我的NameScope找到合适的FrameworkElement,我需要沿着可视树向上走,直到找到一个为{设置非null值的节点{1}}附加属性,每当我NameScope上方的可视树中的任何内容发生更改时,我都必须重做此更新NameScope

window触及了这个话题,但它已经有6年了,并没有解决方案。

0 个答案:

没有答案