我正在尝试将控件从一个父级移动到另一个父级(如果这可行,我不太确定)。我可以抓住我想要移动的控件。这是我的代码:
public void MoveElement(UIElement uiElement)
{
var element = ((FrameworkElement)uiElement).Parent;
//TODO:Remove from parent
myControl.Children.Add(uiElement);
}
当我点击最后一条语句时,会引发 ArgumentException,说明“指定的视觉对象已经是另一个视觉对象的子对象或 CompositionTarget 的根”。奇怪的是,Parent 正在返回 null。如何找到父级?这甚至会起作用吗?
编辑:我不认为实际移动元素是我问题的答案。我正在使用 Visual Studio SDK,并且能够掌握UIElement
构成编辑器窗格(扩展DockPanel
)的内容。我试图将控件从标准编辑器移动到我正在开发的自定义工具窗口中。
这被证明是一个 hack,我意识到我需要同一个控件的多个实例,所以我认为一个更复杂的解决方案(和更少的 hack)正在存储中。