"指定的元素已经是另一个元素的逻辑子元素。首先断开它"第二次调用窗口时出错

时间:2015-07-10 12:24:40

标签: c# wpf

我正在尝试修复一个错误,我登录到我的应用程序后加载我的window1(工作正常),然后我使用我创建的功能返回到登录表单来更改登录用户,我得到一个第二次加载Window1时出错

错误讯息 "指定的元素已经是另一个元素的逻辑子元素。首先断开它。"

window1代码是

public Window1()
        {
            InitializeComponent();

            var tc = TabsControl.Instance as Control;
            Grid.SetColumn(tc, 1);
            Grid.SetRow(tc, 1);

            //error happens on this line
            grdMainContent.Children.Add(tc);
}

不确定如何断开此元素,并且在谷歌上没有成功。

我所尝试的是以下几点。

grdMainContent.Children.Remove(tc);

if (!grdMainContent.Children.Contains(TabsControl.Instance as Control))
            {
                 grdMainContent.Children.Add(tc);
            } 

if (grdMainContent.Children.Contains(tc))
            {
                grdMainContent.Children.Add(tc);
            }

任何帮助总是非常受欢迎

1 个答案:

答案 0 :(得分:1)

之所以发生这种情况,是因为您似乎重复使用之前使用过的TabsControl,并将其作为grdMainContent的子项添加到窗口的另一个实例中。

你可以用以下内容分开:

Grid parentGrid = tc.Parent as Grid;
If(parentGrid != null) {
    parentGrid.Children.Remove(tc);
}