将NavigationWindow与Pages结合使用

时间:2013-02-26 19:59:45

标签: c# wpf navigationservice navigationwindow

在一个项目中有很多Page派生类和 一个MainWindow NavigationWindow

是否真的有Navigate(new PageDerivedClass()) 在代码中或应该构建分层Page树 之前?

如果我回去再做同样的事情来创造一个新的 PageDerivedClass,不应该以某种方式申请 处理该情况并使用已创建的页面 建立一个新的?

据我所知,新创建的页面不是GarbageCollected, 因为您仍然可以浏览NavigationWindow的箭头。

是否以某种方式泄漏?

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

1 个答案:

答案 0 :(得分:1)

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

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

 NavigationSerivce.Navigate(App.Page2);

Soruce:Stackoverflow answer