0

在一个项目中,有很多Page派生类,其中一个MainWindowNavigationWindow.

代码中真的应该有还是应该先构建Navigate(new PageDerivedClass()) 层次树?Page

如果我回去并再次做同样的事情来创建一个新 PageDerivedClass的,应用程序不应该以某种方式处理这种情况并使用已经创建的页面而不是构建一个新的页面吗?

据我所见,新创建的页面不是GarbageCollected,因为您仍然可以通过NavigationWindow.

它是否以某种方式泄漏?

如何正确使用它?MSDN 在这里不是很有帮助。

4

1 回答 1

1

NavigationWindow 不会在导航历史记录中存储内容对象的实例。相反,NavigationWindow 每次使用导航历史导航到内容对象时都会创建一个新实例。此行为旨在避免在导航到大量和大量内容时过度消耗内存。因此,从一个导航到下一个导航不会记住内容的状态。但是,WPF 提供了几种技术,您可以通过这些技术在导航历史记录中存储一段内容的一段状态。(来源MSDN

如果您真的想避免每次都创建新的,您还可以创建各种页面(Page1、Page2 等)的实例并将它们存储在您的 Application 对象中,然后像这样切换到它们:

 NavigationSerivce.Navigate(App.Page2);

来源:Stackoverflow 答案

于 2013-02-26T20:11:14.653 回答