c# - 在 Xamarin Forms 的 Prism 7 中,有没有办法在 OnNavigatedTo 处理程序中获取前一页
问题描述
在 Xamarin 表单中使用 Prism 的新手:INavigationAware 为我提供了 OnNavigatedTo 处理程序。我希望这种形式的不同行为取决于我们从哪里导航。有没有办法获得前一页?
具体来说,如果某个条件为真,我的页面 A 会打开页面 B(模态)。但是,如果从页面 B 中点击后退按钮,将我返回到页面 A,我不想再次打开页面 B。相反,我想回到导航堆栈上 Page A 下方的上一页。
解决方案
顺利通过 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;
}
}
推荐阅读
- python - 直接处理没有Button的Tkinter Entry输入?
- hadoop - Hadoop:纱线和本地内存使用
- python - tensorflow 训练第一个 epoch 结束时的 ValueError
- firebase - Flutter/Firestore - 带有实时监听器的 Streambuilder 和 Firestore
- c# - 不能在此范围内声明名为的本地或参数,因为该名称在封闭的本地范围中用于定义本地或参数
- javascript - 将客户端脚本重定向到记录类型
- typescript - 在类本身内使用 ES6 类的类型
- spring-boot - 使用 GSON 的 Spring Boot 中的多种日期格式
- visual-studio-code - 我在搞乱 Visual Studio Code,现在所有终端都使用(基本)环境打开
- react-native - async-storage SyntaxError 使用 Babel7 编译时出现意外标识符