在一个项目中有很多Page
派生类和
一个MainWindow
NavigationWindow
。
是否真的有Navigate(new PageDerivedClass())
在代码中或应该构建分层Page
树
之前?
如果我回去再做同样的事情来创造一个新的
PageDerivedClass
,不应该以某种方式申请
处理该情况并使用已创建的页面
建立一个新的?
据我所知,新创建的页面不是GarbageCollected
,
因为您仍然可以浏览NavigationWindow
的箭头。
是否以某种方式泄漏?
如何正确使用它? MSDN在这里不是很有帮助。
答案 0 :(得分:1)
NavigationWindow不会在导航历史记录中存储内容对象的实例。相反,NavigationWindow每次使用导航历史记录导航到内容对象时都会创建该实例。此行为旨在避免在导航大量和大量内容时过多的内存消耗。因此,从一个导航到下一个导航不会记住内容的状态。但是,WPF提供了几种技术,您可以通过这些技术为导航历史记录中的一段内容存储一段状态。 (来源MSDN)
如果你真的想避免每次都创建新的,你也可以创建各种页面的实例(Page1,Page2等)并将它们存储在Application对象中,然后像这样切换到它们:
NavigationSerivce.Navigate(App.Page2);
Soruce:Stackoverflow answer