6

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

 myContentControl2.Content = myUserControl;

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

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

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

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

4

2 回答 2

2

Set

myContentControl1.Content = null;

to remove myUserControl from myContentControl1 before setting

myContentControl2.Content = myUserControl;

By the way, don't confuse the logical tree with the visual tree. Get more information in Trees in WPF in the MSDN.

于 2012-01-30T10:33:13.807 回答
1

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

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

更好的选择是在添加其他控件的逻辑树之前myUserControl从逻辑树中删除。myContentControl1为此,您可以将 的Content属性设置myContentControl1为其他内容或null

于 2012-01-30T10:30:27.113 回答