我想将一个控件从一个父级移动到另一个父级(我不确定这是否有效)。我可以获取要移动的控件。以下是我的代码:
public void MoveElement(UIElement uiElement)
{
var element = ((FrameworkElement)uiElement).Parent;
//TODO:Remove from parent
myControl.Children.Add(uiElement);
}
当我执行最后一个语句时,会抛出一个ArgumentException,指出“指定的Visual已经是另一个Visual的子级或CompositionTarget的根。”奇怪的是,Parent返回null。如何找到父级?这样做有用吗?
编辑:我不认为实际移动元素是解决我的问题的答案。我正在使用Visual Studio SDK,并能够获得组成编辑器窗格(扩展DockPanel)的UIElement。我尝试将控件从标准编辑器移动到我正在开发的自定义工具窗口中。
这被证明是一种hack方法,我意识到需要多个相同控件的实例,因此我认为需要更复杂的解决方案(而不是hack)。