按下Windows按钮后恢复导航问题 - WP8.1 C#

时间:2015-09-09 09:30:54

标签: c# windows-phone-8 navigation windows-phone-8.1

WP8.1 Silverlight App

我已经设置了一个urimapper来根据不同的条件启动不同的页面。函数SetUriMapper在App构造函数

中调用

的App.xaml

<UriMapper:UriMapper x:Name="mapper">
    <UriMapper:UriMapping Uri="/RootPage.xaml" />
</UriMapper:UriMapper>

App.xaml.cs

    public App()
    {
        // Global handler for uncaught exceptions. 
        UnhandledException += Application_UnhandledException;

        // Standard Silverlight initialization
        InitializeComponent();

        // Phone-specific initialization
        InitializePhoneApplication();

       // Database functions

        SetupUriMapper();
   }

    void SetupUriMapper()
    {
        // Get the UriMapper from the app.xaml resources, and assign it to the root frame
        UriMapper mapper = Resources["mapper"] as UriMapper;
        RootFrame.UriMapper = mapper;


       if (condition)
       {
           mapper.UriMappings[0].MappedUri = new Uri("/Walkthrough.xaml",       UriKind.Relative);
       }
       else if (condition2)
       {
           mapper.UriMappings[0].MappedUri = new Uri("/ResetPasswordPrompt.xaml", UriKind.Relative);
       }
       else 
           mapper.UriMappings[0].MappedUri = new Uri("/MainPage.xaml", UriKind.Relative);
     }


    private void Application_Activated(object sender, ActivatedEventArgs e)
    {
            // reading data from database
            CycleManager cycMan = CycleManager.Instance;

            using (DBManager dbMan = new DBManager())
            {
                dbMan.OpenConnection();
                dbMan.ReadSettingsData(cycMan.ActiveAccount);
            }
    }

现在用户在页面B中。然后按主页按钮。然后转到应用列表并再次选择应用。调用Application_Activated并导航到页面B.但是在一秒钟内它会导航回MainPage。

但是如果用户按下后退按钮继续,它会导航到Page B并停留在那里。

行为很奇怪,有什么线索吗?

1 个答案:

答案 0 :(得分:0)

这种行为是因为WP8的快速应用恢复功能。

您需要设置ActivationPolicy以及重置导航的事件。此链接为您提供有关如何将应用程序恢复到上次停止位置的详细信息。

Ed Glogowski's Blog