在应用程序被自定义URI打开后更改主页面的URI

时间:2013-08-22 08:37:39

标签: c# xaml windows-phone-8

我使用自定义URI在Windows Phone 8上打开我的应用。当设备收到带有我的自定义协议的URI时,自定义UriMapper会提取参数并返回/MainPage.xaml?param1=test形式的URI。这将打开主页面,而主页面又使用参数来执行某些操作。

问题:如果使用自定义URI打开应用程序,则自定义URI将保留在后端堆栈中。如果我然后打开子页面并使用后退按钮导航回来,主页面将加载参数,这会导致应用程序再次处理参数。我希望在处理完参数后,用无参数版本替换后堆栈中的URI。

1 个答案:

答案 0 :(得分:2)

如果找到参数,您可以删除当前页面(从堆栈导航)并再次导航到同一页面:

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    if (this.NavigationContext.QueryString.ContainsKey("param1"))
    {
        string param = this.NavigationContext.QueryString["param1"]; //Get "Param" this QueryString. 

        // .. Do Stuff

        NavigationService.Navigate(new Uri("/MainPage.xaml", UriKind.Relative));
        NavigationService.RemoveBackEntry();

    }
}

HTH