C# 将控件插入wpf中两个对象之间的可视树

C# 将控件插入wpf中两个对象之间的可视树,c#,wpf,events,event-handling,wpf-controls,C#,Wpf,Events,Event Handling,Wpf Controls,我基本上是做一个弹出控制器,我可以传递一个控制,当弹出被激活时,它将删除从它的父母孩子弹出的控制,然后添加它作为弹出控制器的孩子。我会把它留在那里,但是我需要弹出对象上的事件以保持完整并注册。我尝试将弹出控件作为原始父对象的子对象插入。这可能适用于路由事件,但我也需要普通CLR事件。出于某种原因,当我从父对象中删除子对象时,它的事件会被取消,至少有些会取消 注册了当前正在包装的控件事件的用户仍需要在事件发生时获取这些事件。如果我在试图引发事件之前设置了一个断点,那么处理程序肯定是空的 有趣的是,

我基本上是做一个弹出控制器,我可以传递一个控制,当弹出被激活时,它将删除从它的父母孩子弹出的控制,然后添加它作为弹出控制器的孩子。我会把它留在那里,但是我需要弹出对象上的事件以保持完整并注册。我尝试将弹出控件作为原始父对象的子对象插入。这可能适用于路由事件,但我也需要普通CLR事件。出于某种原因,当我从父对象中删除子对象时,它的事件会被取消,至少有些会取消

注册了当前正在包装的控件事件的用户仍需要在事件发生时获取这些事件。如果我在试图引发事件之前设置了一个断点,那么处理程序肯定是空的

有趣的是,如果我把它放回原来的父对象中,事件会立即重新开始工作


有什么想法吗?

不要像这样破坏视觉树。您的绑定将无法工作,您将遇到各种各样的问题。为什么要这样做?因为如果不先将对象从其原始父对象中删除,我无法使该对象成为另一个对象的子对象。我不是用暴力的方式,我只是在做孩子。移开去移开它。我的问题是关于你的最终目标是什么。为什么不使用数据模板或其他更友好的WPF机制。我不认为从可视化树中删除UI元素并将其放在其他地方是个好主意。最终的结果是,我将该项移动到装饰器中,这样它将显示在所有其他内容之上。所讨论的控件是一个嵌套很深的自定义控件,我需要将其放大到比包含父控件更大的程度,这使得z排序几乎不可能。