2

从 WPFFrameworkElement中,如何捕获从根到可视化树路径的任何更改FrameworkElement即,何时将FrameworkElement或其任何父级添加到视觉树的另一个分支,从中删除或移动到另一个分支?

  • 我一直在寻找合适的事件,但是虽然FrameworkElement有一个OnVisualParentChanged方法,但它没有提供一个相应的事件,可以在不继承框架元素的情况下注册处理程序。因此,这不能应用于任意的、已经实例化FrameworkElement的 s。
  • 理论上,ARelativeSource绑定在这里应该对我有帮助,但要让它工作,我已经需要知道我在寻找哪个父节点(什么类型,什么级别),但事实并非如此(见下文)。

用例:对于另一个问题,一个有希望的可能解决方案是使用当前NameScope相关的 a FrameworkElementNameScope可以从NameScope附加属性中检索适当的实例,但它不是为树中的每个节点设置的,仅用于从控件模板窗口构造的可视树的根。

因此,要找到适合NameScope我的FrameworkElement,我需要沿着可视化树向上走,直到找到一个null为附加属性设置了非值的节点NameScope,并且我必须重做此操作以可能NameScope每次更新我上面的视觉树FrameworkElement已经改变。

这个讨论涉及到这个话题,但它已经 6 岁了,没有解决方案。

4

0 回答 0