2015-01-16 83 views
-1

我正在爲Win 8 metro構建一個XAML應用程序,並且遇到了一個「問題」。我該如何等待初始化組件被執行

我有我的mainpage.xaml一個按鈕,並在mainpage.xaml.cs我有我的構造函數initializecomponent()。當我點擊按鈕時,我稱之爲功能方法:

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

並且工作得很好。 然而,在構造函數中,我也有一個條件,如果真的只是繼續,但如果它是假的,我也想運行GoToOtherPage()。 構造然後查找somtehing這樣

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

由於在InitializeComponent()已準備好發生這種情況時,我得到的錯誤Object reference not set to an instance of an object.我(覺得)發現被refferring到this.Frame。

我應該如何做到這一點正確的方式?在.Navigate之前加入類似「WaitForThisFormToBeReady()」的內容,或者我只是在完整的錯誤軌道上?

回答

0

我認爲this.Frame在頁面導航後變爲非空,因此您可以覆蓋OnNavigatedTo來處理它。否則,您可以通過(Frame)Window.Current.Content獲取FrameApp類或NavigationService類的屬性,具體取決於您在設計模式化應用程序時的行爲。

+0

我試過重寫,它給了我沒有錯誤,它運行的代碼,但是不切換頁面。我也嘗試了this.content = new otherpage(); Whick有效,但其他頁面中的Frame.GoBack()會崩潰。 :) – gubbfett

+0

我認爲你不能在另一個導航調用內部瀏覽... :)你可能需要使用Dispatcher.RunAsync()來運行它來稍微延遲它。 –