Windows Phone 8.1应用程序中的根框架内容始终为null

时间:2014-05-03 16:09:45

标签: c# windows-phone-8.1 win-universal-app

在我的应用程序的主视图模型中,我正在创建一个看起来像这样的类的实例(这已被简化)

public class MyClass
{ 
    public void MyFunction()
    {
        var root = Window.Current.Content as Frame;
        var mainPage = root.Content as Page;
    }
}

然后我调用MyFunction(),但root.Content属性始终为null。

为什么会这样?

root不为空

视图属于Page

类型

由于

1 个答案:

答案 0 :(得分:1)

您正在尝试在MainViewModel的构造函数中执行此操作,那时我认为主页面未完全初始化,这就是Content为null的原因。如果你试图在其他页面中这样做,它工作正常,这对我来说很奇怪,在MainPage(loadingPage)的ViewModel它不工作。我已经测试了这两种情况。

一个解决方法是在主页的加载事件处理程序中向ViewModel发送一些消息。并在该消息处理程序中调用MyFunction。它会工作。

    void MainPage_Loaded(object sender, RoutedEventArgs e)
    {
        Messenger.Default.Send<string,MainViewModel>("MainLoaded");
    }

在MainPage ViewModel

 public MainViewModel()
    {
        Messenger.Default.Register<string>(this, (action) =>
        {
            if (action == "MainLoaded")
            {
                MyClass cls = new MyClass();
                cls.MyFunction();

            }
        });
   }

希望这有帮助