我在Prism中有一个案例,我支持使用View / ViewModel组合的SearchContract。
问题是这样的:当我打开搜索面板并执行多次搜索时,每个单独的搜索都会放在导航堆栈上。这意味着当用户点击“GoBack”按钮时,他们会看到之前的每个搜索结果,直到他们到达搜索开始之前显示的原始表单。
我希望GoBack按钮导航回搜索之前的第一页。
我看到了几种可能性:
答案 0 :(得分:0)
当导航模式为“返回”时,一种方法是在SearchPage.OnNavigatedTo事件上navigation.GoBack()。
public override async void OnNavigatedTo(object navigationParameter, Windows.UI.Xaml.Navigation.NavigationMode navigationMode, System.Collections.Generic.Dictionary<string, object> viewModelState)
{
if (navigationMode != NavigationMode.Back)
{
base.OnNavigatedTo(navigationParameter, navigationMode, viewModelState);
// ... and so on ...
}
else
{
if (this.navigationService.CanGoBack())
{
// this call must be run on the dispatcher due to using the async-void signature on this event
await Window.Current.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => this.navigationService.GoBack());
}
}
}
这里有趣的是需要使用Dispatcher。没有它,.GoBack()函数就会失败。我不相信这是最好的答案,但这是一个答案。