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

本文关键字:元素 quot 第二次 连接 窗口 出错 断开 调用 另一个 | 更新日期: 2023-09-27 18:02:08

我目前正试图修复一个bug,我加载我的window1后登录到我的应用程序(这工作得很好),然后我使用我创建的功能回到登录表单更改登录的用户,我得到一个错误时加载我的window1第二次

错误消息"指定的元素已经是另一个元素的逻辑子元素。先断开连接。"

window1 code is

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);
            }

任何帮助都是非常感谢的

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

这是因为你似乎重用TabsControl,以前使用并添加为grdMainContent的孩子在你的窗口的另一个实例。

你可以使用:

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