2012-12-09 5 views
7

그래서 Windows 8 앱에서 프레임을 변경하려고합니다. this page에서 튜토리얼을 시도했지만 동일한 오류가 계속 발생합니다. OnNavigatedFrom 방법에서, LayoutAwarePage.cs 클래스의프레임 변경시 ArgumentNullException

frameState[_pageKey] = pageState; 

:

I 라인에 경우 ArgumentNullException을 얻고있다.

이제는 왜이 오류가 발생하는지 확신 할 수 없습니다. 내 코드에서 오류를 일으킬 수있는 것이 없다고 생각하기 때문입니다. 내 버튼의 onclick 기능이 코드가 있습니다

DateTime chosenDateTime = new DateTime(year, month, day, hours, minutes, seconds); 
this.Frame.Navigate(typeof(MainPage), chosenDateTime.ToString()); 

그리고 내 MainPage에서 OnNavigatedTo 방법은 다음과 같습니다

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    string parameter = (string)e.Parameter; 
    if (parameter != "") { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     roamingSettings.Values["chosenDateTime"] = parameter; 
     chosenDateTime = Convert.ToDateTime(e.Parameter); 
    } else { 
     Windows.Storage.ApplicationDataContainer roamingSettings = Windows.Storage.ApplicationData.Current.RoamingSettings; 
     if (roamingSettings.Values.ContainsKey("chosenDateTime")) { 
      chosenDateTime = Convert.ToDateTime(roamingSettings.Values["chosenDateTime"].ToString()); 
     } 
     if (roamingSettings.Values.ContainsKey("headline")) { 
      chosenDateTextBlock.Text = roamingSettings.Values["headline"].ToString(); 
     } 
    } 
    SetTime(); 
} 

사람은 나에게 내가이 문제를 해결할 수있는 방법에 대한 몇 가지 정보를 줄 수 있습니까?

감사합니다.

답변

10

좋아, 그래서 내 자신의 질문에 대한 답변을 찾았습니다!

protected override void OnNavigatedTo(NavigationEventArgs e) { 
    base.OnNavigatedTo(e); 
} 

protected override void OnNavigatedFrom(NavigationEventArgs e) { 
    base.OnNavigatedFrom(e); 
} 

그리고

base.OnNavigatedFrom(e); 
base.OnNavigatedTo(e); 

가에서이 매우 중요했다 : I가 내가에서 참조 두 페이지에

적어도 최소 2 가지 방법의 구현을 구현했다 행동 양식.

+1

답변을 올바르게 확인하십시오.) –

0

이 문제를 유발할 수있는 또 다른 상황 중 하나는 페이지가 더 이상 프레임에 연결되어 있지 않은 경우입니다 (예 : 이벤트 핸들러 또는 다른 참조로 인해 메모리에 남아 있지만 해당 프레임이 이미 페이지에서 벗어났습니다).

여러 번 트리거되거나 이벤트에 여러 번 첨부 될 수있는 이벤트 처리기에서 Frame.Navigate()을 호출하면이 작업이 실수로 발생하기 쉽습니다 (첫 번째 호출은 작동하지만 두 번째 호출은 페이지 번호 뒤에 호출됩니다). 더 이상 프레임이 있음).

관련 문제