以编程方式将UserControl从ContentControl移动到另一个
在WPF应用程序中,我想将UserControl从ContentControl移动到代码中的另一个:
myContentControl2.Content = myUserControl;
在这种情况下,我收到一个错误:
指定的元素已经是另一个元素的逻辑子元素。 首先断开它。
在ControlControl类描述中,我可以看到RemoveVisualChild方法 ,但是当我尝试在代码中使用它时,我得到一个Unknown方法错误
myContentControl1.RemoveVisualChild(myUserControl);//here I get an "Unknown method" error
我哪里错了?
如何将UserControl从ContentControl移动到代码隐藏中的另一个?
组
myContentControl1.Content = null;
在设置之前从myContentControl1中删除myUserControl
myContentControl2.Content = myUserControl;
顺便说一句,不要将逻辑树与可视化树混淆。 在MSDN 中的WPF中的树中获取更多信息。
在ControlControl类描述中,我可以看到RemoveVisualChild方法,但是当我尝试在代码中使用它时,我得到一个Unknown方法错误
这是因为RemoveVisualChild
和RemoveLogicalChild是受保护的方法,您无法直接在类中访问它们。 如果要使用此方法,则从ContentControl
创建派生类,并使用该类中的某个公共方法包装器公开这些方法。
更好的选择是在添加一些其他控件的逻辑树之前从myContentControl1
逻辑树中删除myUserControl
。 要实现此目的,您可以将myContentControl1
的Content
属性设置为其他内容或为null
。