以编程方式将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移动到另一个
设置
myContentControl1.Content = null;
在设置之前从myContentControl1中删除myUserControl
myContentControl2.Content = myUserControl;
顺便说一句,不要把逻辑树和视觉树混为一谈。在MSDN中的WPF中的Trees中获取更多信息。
在ControlControl类的描述中,我可以看到RemoveVisualChild方法,但当我试图在代码中使用它时,我会得到未知方法错误
这是因为RemoveVisualChild
和RemoveLogicalChild是受保护的方法,您不能在类中直接访问它们。如果要使用此方法,请从ContentControl
创建一个派生类,并使用该类中的一些公共方法包装器公开这些方法。
更好的选择是从myContentControl1
的逻辑树中删除myUserControl
,然后再添加其他控件的逻辑树。要实现这一点,可以将myContentControl1
的Content
属性设置为其他属性或null
。