2009-09-09 2 views
3

시나리오 :WPF : 두 번째 페이지 방문 후 NavigationService NULL입니다.

다음과 같은 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 페이지가 아무 문제없이 열립니다.

그러나 두 번째로 "홈"버튼을 클릭하면 "this.NavigationService"가 null 인 오류가 발생합니다.

방금 WPF로 시작 했으므로 아무 생각이 없습니다. 이 문제를 해결하기 시작하는 곳 .. 누구?

답변

0

페이지 (거를 사용 NavigationService있는 사람들을위한)에 KeepAlive를 = 진정한을보십시오.

이 문제가 발생하는 이유는 더 많은 메모리를 절약하기 위해 다른 페이지로 이동 한 후에 NavigationService가 해제되는 것입니다.

Reference - Page Lifetime and the Journal

관련 문제