我使用自定义URI在Windows Phone 8上打开我的应用。当设备收到带有我的自定义协议的URI时,自定义UriMapper会提取参数并返回/MainPage.xaml?param1=test
形式的URI。这将打开主页面,而主页面又使用参数来执行某些操作。
问题:如果使用自定义URI打开应用程序,则自定义URI将保留在后端堆栈中。如果我然后打开子页面并使用后退按钮导航回来,主页面将加载参数,这会导致应用程序再次处理参数。我希望在处理完参数后,用无参数版本替换后堆栈中的URI。
答案 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