我正在尝试修复一个错误,我登录到我的应用程序后加载我的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);
}
任何帮助总是非常受欢迎
答案 0 :(得分:1)
之所以发生这种情况,是因为您似乎重复使用之前使用过的TabsControl,并将其作为grdMainContent的子项添加到窗口的另一个实例中。
你可以用以下内容分开:
Grid parentGrid = tc.Parent as Grid;
If(parentGrid != null) {
parentGrid.Children.Remove(tc);
}