无法在Xamarin.Forms中获取MainPage以作出反应/改变

时间:2016-04-26 22:36:56

标签: c# xamarin xamarin.forms

我尝试了不同的方法来改变我的MainPage,但它没有发生。基本上当我的应用程序启动时,它需要执行一些异步任务来初始化所有内容,然后获取要显示的真实主页面。我首先在App.cs.中尝试了一个事件处理程序。我可以确认事件处理程序在我的调试器中启动。但是,切换主页的代码没有成功完成。我的UI没有任何变化。此代码如下:

    private void UnitStatusModelChanged(object sender, EventArgs e)
    {
        UnitStatusModel = _unitStatusMonitor.UnitStatusModel;
        UnitStatusViewModel = new UnitStatusViewModel(UnitStatusModel, InputResourceHandler);
        MainPage = new MainTabbed(UnitStatusViewModel, InputResourceHandler);
        Debug.WriteLine("Switched page to " + UnitStatusModel.Version.Name);
    }

    protected override void OnStart()
    {
        _unitStatusMonitor.UnitStatusChanged += new UnitStatusModelChangedEventHandler(UnitStatusModelChanged);
        _commandQueue.StartQueue();
    }

我想也许以这种方式设置MainPage不是要走的路。因此,我尝试将MainPage设置为空白的NavigationPage,然后在应用程序准备就绪后将模型页面推到顶部。这也没有效果。

            var newPage = new MainTabbed(
                new UnitStatusViewModel(_unitStatusModel, inputResourceHandler),
                inputResourceHandler
                );
            App.Current.MainPage.Navigation.PushModalAsync(newPage);

我可以确认,如果我使用MainTabbed页面启动应用程序,页面会显示,因此它不应该是MainTabbed的问题。同样,我还在调试器中验证了这些代码行正在执行,没有抛出异常。仍然,没有更改MainPage。是什么给了什么?

1 个答案:

答案 0 :(得分:1)

在异步完成后,当您调用PushModalAsync(或任何UI事物)时检查您的线程。确保它在主线程上。