2009-09-09 65 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