0

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

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

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

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

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

编辑:将视图更改为 UserControls 并没有解决问题

编辑:我意识到我说错了。我没有将主窗口的内容设置为窗口,而是将其设置为第二个窗口的内容。就像:

MainWindow.Content = nextScreen.Content;
4

1 回答 1

0

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

window.Content = userControl.Content;

代替

window.Content = userControl;

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

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

于 2013-06-17T12:39:30.093 回答