代码之家  ›  专栏  ›  技术社区  ›  Adam Driscoll

WPF FrameworkElement父元素和移动UIElement

  •  6
  • Adam Driscoll  · 技术社区  · 14 年前

    我正在尝试将控件从一个父控件移动到另一个父控件(如果这能起作用,我不太确定)。我可以控制我想移动的东西。这是我的密码:

    public void MoveElement(UIElement uiElement)
    {
        var element = ((FrameworkElement)uiElement).Parent;
        //TODO:Remove from parent
        myControl.Children.Add(uiElement);
    }
    

    当我点击最后一个语句时,一个ArgumentException被抛出,声明“指定的Visual已经是另一个Visual的子对象或CompositionTarget的根对象。”奇怪的是父对象返回null。你如何找到父母?这样行吗?

    编辑: 我不认为移动一个元素就能解决我的问题。我正在使用visualstudiosdk,并且能够获得 UIElement 构成编辑器窗格(扩展) DockPanel ). 我试图将控件从标准编辑器移到我正在开发的自定义工具窗口中。

    这被证明是一个黑客,我意识到我需要同一个控件的多个实例,所以我认为一个更复杂的解决方案(和较少的黑客)是在商店里。

    1 回复  |  直到 11 年前
        1
  •  7
  •   Dave Clemmer manu    11 年前

    这个 Parent DataTemplate 在一个 ListBox

    尝试使用 VisualTreeHelper.GetParent 相反。可视化树是WPF元素如何组织的较低级别表示,它让您可以访问模板之类的东西在其中抛出的所有额外“位”。例如,打电话 关于根元素 数据模板 列表框 返回一个 ContentPresenter .

    CheckBox ,我不认为你能移除它。

    如果您可以通过在可视化树上移动控件来为您要实现的目标提供更多的上下文,人们可能会提供更具体的建议或替代方法。

    推荐文章