2009-09-09 64 views
3

方案之后NULL:WPF:是的NavigationService第2页访问

我有一个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); 
} 

能正常工作和PersonalData页面被加载。 在那第二页我有一个按钮,“家”是导航回首页:

private void btnHome_Click(object sender, System.Windows.RoutedEventArgs e) 
    { 
     Home home = new Home(); 
     this.NavigationService.Navigate(home); 
    } 

,因为我想重用在后来形式的按钮太多我使用“导航”在这里,总是有一个按钮导致开始页面。

所以这也适用,主页被加载。我甚至可以在第二次点击btnNewUser,PersonalData页面打开时没有任何问题。

但是,当我再点击“Home”按钮,第二次,我得到我刚开始用WPF的错误“this.NavigationService”为空..

,我不知道从哪里开始修复这个..任何人?

回答

0

尝试在您(对于那些要使用的NavigationService)的KeepAlive =真

发生此问题的原因是在导航到其他页面以便保存更多内存后,NavigationService将被释放。

Reference - Page Lifetime and the Journal