WPF:第二次页面访问后 NavigationService 为 NULL
Posted
技术标签:
【中文标题】WPF:第二次页面访问后 NavigationService 为 NULL【英文标题】:WPF: NavigationService is NULL after 2nd page visit 【发布时间】:2010-11-26 21:26:09 【问题描述】:场景:
我有一个这样的 NavigationWindow 样式:
<Style TargetType="NavigationWindow" x:Key="x:Type NavigationWindow">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="NavigationWindow" >
...
</Style>
我通过加载一个名为 Home.xaml 的页面来启动我的应用程序。 在 Home.xaml 中,我有一个按钮可以导航到另一个名为 PersonalData 的页面:
private void btnNewUser_Click(object sender, System.Windows.RoutedEventArgs e)
PersonalData personalData = new PersonalData();
this.NavigationService.Navigate(personalData);
这可以正常工作,并且会加载个人数据页面。 在第二页上,我有一个“主页”按钮,可以导航回主页:
private void btnHome_Click(object sender, System.Windows.RoutedEventArgs e)
Home home = new Home();
this.NavigationService.Navigate(home);
我在这里使用“导航”是因为我也想在以后的表单中重复使用该按钮,以便始终拥有一个通向起始页的按钮。
所以这也有效并且主页被加载。我什至可以再次点击那里的 btnNewUser,PersonalData 页面会毫无问题地打开。
但是,当我第二次单击“主页”按钮时,出现“this.NavigationService”为空的错误..
我刚开始使用 WPF,我不知道从哪里开始解决这个问题。有人吗?
【问题讨论】:
【参考方案1】:在您的 Page 上尝试 KeepAlive=True(对于那些将使用 NavigationService 的用户)。
出现此问题的原因是,在您导航到其他页面后,正在释放 NavigationService 以节省更多内存。
Reference - Page Lifetime and the Journal
【讨论】:
以上是关于WPF:第二次页面访问后 NavigationService 为 NULL的主要内容,如果未能解决你的问题,请参考以下文章
在使用ItemContainerGenerator进行自定义时,WPF ComboBox在第二次打开之前不会更新项目
第二次推送视图控制器xamarin ios后需要触摸以与tableview交互