1

在 Xamarin 表单中使用 Prism 的新手:INavigationAware 为我提供了 OnNavigatedTo 处理程序。我希望这种形式的不同行为取决于我们从哪里导航。有没有办法获得前一页?

具体来说,如果某个条件为真,我的页面 A 会打开页面 B(模态)。但是,如果从页面 B 中点击后退按钮,将我返回到页面 A,我不想再次打开页面 B。相反,我想回到导航堆栈上 Page A 下方的上一页。

4

1 回答 1

2

顺利通过 Page 将直接违反 MVVM 设计,因为您的 ViewModel 应该没有关于关联视图的直接线索。也就是说,所有 INavigationAware 方法都使用 NavigationParameters,这意味着您可以传递一些可以检查的值,类似于以下内容:

NavigationService.NavigateAsync("ModalA", new NavigationParameters {{"reason", "foo"}});

public void OnNavigatedTo(INavigationParameters navigationParameters)
{
    switch(navigationParameters.GetValue<string>("reason"))
    {
        case "foo":
            // Do Foo
            break;
        case "bar":
            // Do Bar
            break;
    }
}
于 2018-09-30T18:39:45.867 回答