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

本文关键字:URI 主页 应用程序 自定义 | 更新日期: 2023-09-27 18:28:31

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

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

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

如果您找到一个参数,您可以删除当前页面(使用堆栈中的导航),然后再次导航到相同的页面,如下所示:

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