在简历处理程序中的App.xaml.cs中进行导航

时间:2013-12-13 05:13:35

标签: c# windows-store-apps winrt-xaml

我有一个C#/ XAML Windows应用商店应用,我需要能够在简历处理程序中执行一些网络/ RESTful API测试,以确保令牌/会话仍然有效。如果不是,则应用需要将用户引导回登录页面。

我在SO上尝试了许多解决方案,出于某种原因,它们无法在App.xaml.cs中运行。最重要的问题似乎是我无法从简历处理程序中获取Frame.Navigate。

    public App()
    {
        this.InitializeComponent();
        this.Suspending += OnSuspending;
        Application.Current.Resuming += new EventHandler<object>(OnResuming);
    }

    private async void OnResuming(object sender, object e)
    {
        bool success = true;
        // some tests are performed here
        if (!success) { /* what do I use here? */ }
    }

我在以下页面尝试过解决方案:

1 个答案:

答案 0 :(得分:1)

在您的示例中,您在Application类中处理Resuming事件而不是其他地方。您甚至可以在应用程序页面中的任何位置附加恢复处理程序。

这个example from MSDN (How to resume an app)直接在MainPage类上绑定了resume处理程序,你可以在访问Frame.Navigate方法时没有问题。您甚至可以创建一个PageBase类,它会自动添加此简历处理程序,以便您的所有页面都可以利用此功能。

另一个解决方案就是抓住根框架。默认的WinRT示例应用程序使用以下内容:

Frame rootFrame = Window.Current.Content as Frame;

所以你做同样的事情应该很安全。虽然你说你出于某些原因无法访问Frame.Navigate,所以如果你已经尝试过,我就不是用户了。

最重要的是要确保你根本没有阻止UI线程。不会在UI线程上调用Resuming事件,因此默认情况下不会阻止它,但请确保您无论如何都要利用async / await,并使用Dispatcher更新任何UI。