我有一个控件是另一个控件的子控件(因为所有非根控件/元素都在 WPF 中)。如果我想将控件移动到另一个容器,我必须先将它与当前容器断开连接(否则会引发异常)。
如果我知道父母是什么,那么我可以将其从其 Children 集合或 Content 或其他内容中删除。但是如果我不知道父容器的类型是什么——那我该如何移除子控件呢?
在下面的代码示例中:如何在不知道父级(面板、组框...)的类型的情况下将“sp1”移动到另一个容器?
// Add the child object "sp1" to a container (of any type).
StackPanel sp1 = new StackPanel();
SomeParentControl.Children.Add(sp1);
// Somewhere else in the code. I still have a reference to "sp1" but now I don't know what container it is in. I just want to move the "sp1" object to another parent container.
AnotherParentControl.Content = sp1; // Generates exception: "Must disconnect specified child from current parent Visual before attaching to new parent Visual."
理想情况下,我只想写一些类似的东西:
sp1.Parent.RemoveChild(sp1);
但我还没有找到类似的东西。