以编程方式将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 。 要实现此目的,您可以将myContentControl1Content属性设置为其他内容或为null