C# 如何等待initializecomponent完成

C# 如何等待initializecomponent完成,c#,xaml,microsoft-metro,C#,Xaml,Microsoft Metro,我正在为Win 8 metro构建一个XAML应用程序,但遇到了一个“问题” 我有一个带有按钮的mainpage.xaml,在mainpage.xaml.cs中有一个带有initializecomponent()的构造函数。当我单击按钮时,我调用此函数方法: private void GoToOtherPage() { this.Frame.Navigate(typeof(MySecondPage)); } 而且效果很好。 但是,在构造函数中,我也有一个条件,如果为true,则继续,

我正在为Win 8 metro构建一个XAML应用程序,但遇到了一个“问题”

我有一个带有按钮的mainpage.xaml,在mainpage.xaml.cs中有一个带有initializecomponent()的构造函数。当我单击按钮时,我调用此函数方法:

private void GoToOtherPage()
{ 
    this.Frame.Navigate(typeof(MySecondPage));
}
而且效果很好。 但是,在构造函数中,我也有一个条件,如果为true,则继续,如果为false,则我还希望运行GoToOtherPage()。 然后构造函数看起来像这样

Public Mainpage()
{
    InitializeComponent();
    if(....)
    {
        //do some stuff
    }
    else
    {
        GoToOtherPage();
    }
}
由于发生这种情况时initializecomponent()未准备就绪,因此我得到的错误是
对象引用未设置为对象的实例。
我(认为)找到的是refferring this.Frame


我应该如何以正确的方式进行此操作?将“WaitForThisFormToBeReady()”之类的内容放在.Navigate之前,还是我在这里完全走错了方向

我认为
这个.Frame
在页面被导航到后变为非空,因此您可以覆盖
OnNavigatedTo
来处理它。否则,您可以通过
(Frame)窗口.Current.Content
,抓取
框架,
应用程序
类上的属性或
导航服务
实现-取决于应用程序的设计模式化程度。

我尝试了覆盖,但没有出现错误,它运行代码,但不会切换页面。我还尝试了this.content=new otherpage();whick可以工作,但其他页面中的Frame.GoBack()崩溃。:)我想你不能在另一个导航呼叫中导航…:)您可能需要使用
Dispatcher.RunAsync()
来运行它,以稍微延迟它。