以编程方式将UserControl从ContentControl移动到另一个ContentControl

本文关键字:ContentControl 移动 另一个 UserControl 编程 方式 | 更新日期: 2023-09-27 18:21:47

在WPF应用程序中,我想将UserControl从ContentControl移动到代码中的另一个:

 myContentControl2.Content = myUserControl;

在这种情况下,我得到一个错误:
指定的元素已经是另一个元素的逻辑子元素。先断开连接

在ControlControl类描述中,我可以看到RemoveVisualChild方法,但当我尝试在代码中使用它时,我会得到一个未知方法错误

myContentControl1.RemoveVisualChild(myUserControl);//here I get an "Unknown method" error

我哪里错了
如何在代码隐藏中将UserControl从ContentControl移动到另一个

以编程方式将UserControl从ContentControl移动到另一个ContentControl

设置

myContentControl1.Content = null;

在设置之前从myContentControl1中删除myUserControl

myContentControl2.Content = myUserControl;

顺便说一句,不要把逻辑树和视觉树混为一谈。在MSDN中的WPF中的Trees中获取更多信息。

在ControlControl类的描述中,我可以看到RemoveVisualChild方法,但当我试图在代码中使用它时,我会得到未知方法错误

这是因为RemoveVisualChild和RemoveLogicalChild是受保护的方法,您不能在类中直接访问它们。如果要使用此方法,请从ContentControl创建一个派生类,并使用该类中的一些公共方法包装器公开这些方法。

更好的选择是从myContentControl1的逻辑树中删除myUserControl,然后再添加其他控件的逻辑树。要实现这一点,可以将myContentControl1Content属性设置为其他属性或null