窗口内容更改:指定的元素已经是逻辑子元素

时间:2013-06-17 00:01:58

标签: c# wpf invalidoperationexception

所以我意识到这是一个经常被问到的错误,我从谷歌那里读到了很多结果,但我仍然无法弄清楚它是如何适用于我的情况的。

设置:我创建一个窗口来呈现视图。我创建了第一个视图的实例,并将窗口的Content属性设置为视图。目前我的每个观点都是一个窗口本身。这在7/10计算机上完美运行。但是,由于某些原因,在一些计算机上(验证正确的.NET版本),切换到第二个视图(创建第二个视图的实例并将窗口的Content属性设置为第二个视图)会抛出System.InvalidOperationException已指定的元素已经另一个元素的逻辑子元素。首先断开它。

我读到使用ContentTemplate而不是Content会解决问题,但这只会产生一个空白屏幕而不是第二个视图(我确定我做错了)。

我还读到你应该使用UserControl而不是Window作为Window的Content属性,所以我正在尝试(我没有计算机出现此错误,所以我必须等待听到回到成功)。但在我看来,这并不能真正改变任何事情。

任何想法为什么这只发生在某些计算机上,以及有关如何修复它的任何想法?

编辑:将视图更改为UserControls无法解决问题

编辑:我意识到我错过了。我没有将主窗口的内容设置为Window,我将其设置为第二个Window的内容。所以喜欢:

MainWindow.Content = nextScreen.Content;

1 个答案:

答案 0 :(得分:0)

感谢大家的答案。我发现将我的视图更改为UserControls是正确的路径。当我第一次尝试时,我犯了这个错误:

window.Content = userControl.Content;

而不是

window.Content = userControl;

仍在我的机器上工作,但在以前遇到问题的计算机上继续失败。

我仍然不明白为什么只有少数计算机在这上面抛出异常。显然它们之间存在一些差异,尽管它并不像Windows版本或处理器架构那样明显。