2012-06-29 8 views
0

다른 페이지로 이동할 때 페이지 상태를 유지하려고하지만 어떤 이유로이 페이지로 돌아갈 때 항목이 기본 상태로 돌아갑니다. 왜 작동하지 않습니까? 내가 중단 점을 추가하여 문제를 추적 :Windows Phone Preserving Page 상태가 작동하지 않습니다.

 protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedFrom(e); 


     State["Title"] = TitleTextBox.Text; 

     //all of those are RadioButtons - if their is a better way to do it then please comment :) 
     int i = new int(); 
     if (RB0.IsChecked.Value) 
      i = 0; 
     else if (RB1.IsChecked.Value) 
      i = 1; 
     else if (RB2.IsChecked.Value) 
      i = 2; 
     else if (RB3.IsChecked.Value) 
      i = 3; 
     State["CheckedRB"] = i; 

    } 

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     if (State.ContainsKey("Title")) 
      TitleTextBox.Text = State["Title"] as string; 
     if (State.ContainsKey("CheckedRB")) 
     { 
      int i = (int)State["CheckedRB"]; 

      if (i == 0) 
       RB0.IsChecked = true; 
      else if (i == 1) 
       RB1.IsChecked = true; 
      else if (i == 2) 
       RB2.IsChecked = true; 
      else if (i == 3) 
       RB3.IsChecked = true; 
     } 
    } 

편집 ... 완벽하게 튜토리얼을 따라하는 것 같다. OnNavigatedTo와

(OnNavigatedFrom) 
look0 : "Text From TextBox" 
look1 : "Text From TextBox" 
i : (0, 1, 2, or 3) 

과 같은 :

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedTo(e); 

     if (State.ContainsKey("Title")) 
      TitleTextBox.Text = State["Title"] as string; <--breakpoint 
     if (State.ContainsKey("CheckedRB")) 
     { 
      int i = (int)State["CheckedRB"]; <--breakpoint 

      if (i == 0) 
       RB0.IsChecked = true; 
      else if (i == 1) 
       RB1.IsChecked = true; 
      else if (i == 2) 
       RB2.IsChecked = true; 
      else if (i == 3) 
       RB3.IsChecked = true; 
     } 
    } 

과 (OnNavigatedTo에) 그들 중 어느 하나를 꺼

  protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e) 
    { 
     base.OnNavigatedFrom(e); 


     State["Title"] = TitleTextBox.Text; 
     string look0 = WorkOutName.Text; 
     string look = State["WorkOutName"] as string; 

     int i = new int(); 
     if (RB0.IsChecked.Value) 
      i = 0; 
     else if (RB1.IsChecked.Value) 
      i = 1; 
     else if (RB2.IsChecked.Value) 
      i = 2; 
     else if (RB3.IsChecked.Value) 
      i = 3; 
     State["CheckedRB"] = i; <-------- breakpoint 

여기 결과입니다.

답변

1

나는 당신의 코드를 시험해 보았다. 나는이 사건의 경우 알고 있지만, 앱에서 다음 탐색 흐름이있는 경우 기억하지 않는다 : 먼저 방문 할 때 페이지 2의 상태를 저장 한 경우

Page1 (forward navigation)-> Page2 (back navigation)-> Page1 (forward navigation)-> Page2 

, 그 상태가 유지되지 않습니다 다시 Page2로 돌아갈 때는 다시 탐색 할 때 페이지가 삭제되고 그 페이지에 대한 상태 사전도 있기 때문입니다. 자세한 내용은 documentation에서 확인할 수 있습니다.

관련 문제