c# - 使用 FreshMVVM 在 Xamarin 表单中管理 ModalStack
问题描述
使用
- 新鲜MVVM
- iOS 和 Android 上的 Xamarin Forms 4.4
关于如何在 Xamarin Forms 中清理模态堆栈以及我的问题有很多问题:
var numModals = Application.Current.MainPage.Navigation.ModalStack.Count;
// To prevent the page from being temporarily visible as each Modal above it is Popped, set the Opacity to 0
for (int currModal = 0; currModal < numModals; currModal++)
{
NavigationPage navigationPage = Application.Current.MainPage.Navigation.ModalStack[(numModals - currModal) - 1] as NavigationPage;
navigationPage.Opacity = 0;
}
for (int currModal = 0; currModal < numModals; currModal++)
{
await this.CoreMethods.PopPageModel(null, true, false);
}
Application.Current
虽然这确实有效,但它增加了对我的 ViewModel的依赖。看到我们正在使用 FreshMVVM,我正在寻找一种可以更好地使用它并删除我的 Application.Curent 代码的方法。
带有 IFreshNavigationService 的自定义导航服务是唯一让我兴奋的东西,但是我看到的例子是
- Login Page 导航和 MainPage 导航边界
- 选项卡式视图
我有一个示例页面流是
- 主页(非模态)
- ValueHistoryPage(非模态)
- 配置值设备页面(模式)
- 选择ValueDeviceModelPage(模态)
- ConnectValueDevicePage(模式)
此时,用户可以决定他们已经配置了他们的 ValueDevice 但还不想使用它,所以返回 ValueHistoryPage 这意味着关闭所有模式,因此 ValueHistoryPage 现在是 TopMost 或开始一个新的导航集去CaptureFromValueDevicePage ( modal ) 并关闭前一组三个 Modals(ConfigureValueDevicePage、ChooseValueDeviceModelPage 和 ConnectValueDevicePage)
第一组 Modals 是否会在一个自定义的 IFreshNavigationService 中,并且可能在单独的 IFreshNavigationService 中的 CaptureFromValueDevicePage 中?
是否有与选项卡式视图或登录无关的 IFreshNavigationService 示例?
解决方案
推荐阅读
- java - 如何格式化字符串以打印 4 位数字和 2 位小数
- sql - BigQuery,如何在 where 子句中使用别名?
- javascript - 如何通过流(以无损方式)将参数传递给函数?
- google-compute-engine - 使用 GCP 部署管理器更新映像
- python - Python 日期时间 1970-01-01 07:00:07
- xml - XSL 实体定义被忽略 - 为什么?
- vb.net - 无法获取 Spotify 进程的 MainWindowTitle
- json - 如何使用 jq 在 JSON 文件中获取具有特定值的字段计数?
- java - Java 字符数组最大容量
- in-memory-database - GridDB 以纳秒纪元 int 作为行键下采样到 OHLC 条