2015-01-16 3 views
-1

Windows 8 Metro 용 XAML 응용 프로그램을 빌드하고 "문제"가 발생했습니다.initializecomponent가 완료 될 때까지 기다릴 수있는 방법

버튼이있는 mainpage.xaml이 있고 mainpage.xaml.cs에 initializecomponent()가있는 생성자가 있습니다. 단추를 클릭하면이 함수를 호출합니다.

private void GoToOtherPage() 
{ 
    this.Frame.Navigate(typeof(MySecondPage)); 
} 

잘 작동합니다. 그러나, contructor에서 나는 또한 조건이 있고 참이면 계속 수행하지만 false 일 경우 GoToOtherPage()도 실행하려고합니다. 생성자는 다음의 InitializeComponent 이후이

Public Mainpage() 
{ 
    InitializeComponent(); 
    if(....) 
    { 
     //do some stuff 
    } 
    else 
    { 
     GoToOtherPage(); 
    } 
} 

(같은 somtehing 보이는)이되지 않음 준비 이러한 상황이 발생했을 때, 나는 this.Frame에 refferring되어 발견 한 오류 난 (생각) Object reference not set to an instance of an object.를 얻을.

어떻게해야합니까? .Navigate 앞에 "WaitForThisFormToBeReady()"와 같은 것을 넣거나 여기에 잘못된 트랙을 넣으시겠습니까?

답변

0

페이지가 탐색 된 후에 this.Frame이 null이되지 않으므로 OnNavigatedTo을 덮어 쓰면 처리 할 수 ​​있다고 생각합니다. 그렇지 않은 경우 Frame에서 (Frame)Window.Current.Content까지 App 클래스의 속성 또는 NavigationService 구현을 가져올 수 있습니다. 이는 앱을 디자인 한 디자인의 거리에 따라 다릅니다.

+0

나는 오버라이드를 시도했지만 오류가 발생하지 않았고 코드를 실행하지만 페이지를 전환하지 않습니다. 나는 또한 this.content = new otherpage()를 시도했다; 윙윙 거림은 작동하지만 다른 페이지에서는 Frame.GoBack()이 충돌합니다. :) – gubbfett

+0

다른 탐색 호출의 내부를 탐색 할 수 없다고 생각합니다 :) 조금 지연시키기 위해'Dispatcher.RunAsync()'를 사용하여 실행해야 할 수도 있습니다. –

관련 문제