"对象引用未设置为对象的实例" vs13中的错误

时间:2014-03-27 22:51:07

标签: c# .net microsoft-metro

我正在使用C#Visual Studio 2013 for Windows,当我尝试调试时,会发生以下错误:“对象引用未设置为对象的实例”:

public sealed partial class MainPage : Page
{
    public MainPage()
    {
        this.InitializeComponent();
        this.Frame.Navigate(typeof(WelcomePage));
    }
}

问题出在导航线上。我该如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

构造函数用于两件事,实际构建对象(分配内存等,由框架为您完成)并初始化数据,事件处理程序等。其他任何东西都不应该在其中完成,当然也不像页面导航。

此时可能不会创建Frame对象,并且您无论如何都不应该使用它。相反,设置一个事件:

或者:

<Page ...
     Loaded="Page_Loaded"/>

或:

public MainPage()
{
    this.InitializeComponent();
    Loaded += Page_Loaded;
}

然后有这样的功能:

private void Page_Loaded (object sender, RoutedEventArgs e)
{
   this.Frame.Navigate(typeof(WelcomePage));
}

除了更好的练习外,这可能会解决你的例外问题。

答案 1 :(得分:0)

这种情况最有可能发生,因为Frame在您致电null时仍然是Navigate我建议您将此代码移至其中或添加无效检查。