Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对页面使用NavigationWindow_C#_Wpf_Navigationservice_Navigationwindow - Fatal编程技术网

C# 对页面使用NavigationWindow

C# 对页面使用NavigationWindow,c#,wpf,navigationservice,navigationwindow,C#,Wpf,Navigationservice,Navigationwindow,在一个项目中有许多页面派生类和 一个main窗口,它是一个导航窗口 是否真的应该有导航(new PageDerivedClass()) 在代码中,还是应该构建分层页面树 以前 如果我回去再做同样的事情来创建一个新的 PageDerivedClass,应用程序不应该 处理该情况并使用已创建的页面 建造一个新的 据我所知,新创建的页面不是垃圾收集的, 因为您仍然可以通过导航窗口的箭头进行导航 不知怎么的,它漏了吗 如何正确使用它?MSDN在这里没有多大帮助。导航窗口在导航历史记录中不存储内容对象的实

在一个项目中有许多
页面
派生类和 一个
main窗口
,它是一个
导航窗口

是否真的应该有
导航(new PageDerivedClass())
在代码中,还是应该构建分层
页面
树 以前

如果我回去再做同样的事情来创建一个新的
PageDerivedClass
,应用程序不应该 处理该情况并使用已创建的页面 建造一个新的

据我所知,新创建的页面不是垃圾收集的, 因为您仍然可以通过
导航窗口的箭头进行导航

不知怎么的,它漏了吗


如何正确使用它?MSDN在这里没有多大帮助。

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

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

 NavigationSerivce.Navigate(App.Page2);
索罗斯: