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