【问题标题】:Cannot get MainPage in Xamarin.Forms to react/change无法让 Xamarin.Forms 中的 MainPage 做出反应/更改
【发布时间】:2016-04-27 21:08:10
【问题描述】:

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

    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 没有任何变化。什么给了?

【问题讨论】:

  • 请在Application类中分享您的完整代码

标签: c# xamarin xamarin.forms


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 1970-01-01
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多