首页 > 解决方案 > 使用 FreshMVVM 在 Xamarin 表单中管理 ModalStack

问题描述

使用

关于如何在 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 的自定义导航服务是唯一让我兴奋的东西,但是我看到的例子是

  1. Login Page 导航和 MainPage 导航边界
  2. 选项卡式视图

我有一个示例页面流是

  1. 主页(非模态)
  2. ValueHistoryPage(非模态)
  3. 配置值设备页面(模式
  4. 选择ValueDeviceModelPage(模态
  5. ConnectValueDevicePage(模式

此时,用户可以决定他们已经配置了他们的 ValueDevice 但还不想使用它,所以返回 ValueHistoryPage 这意味着关闭所有模式,因此 ValueHistoryPage 现在是 TopMost 或开始一个新的导航集去CaptureFromValueDevicePage ( modal ) 并关闭前一组三个 Modals(ConfigureValueDevicePage、ChooseValueDeviceModelPage 和 ConnectValueDevicePage)

第一组 Modals 是否会在一个自定义的 IFreshNavigationService 中,并且可能在单独的 IFreshNavigationService 中的 CaptureFromValueDevicePage 中?

是否有与选项卡式视图或登录无关的 IFreshNavigationService 示例?

标签: c#xamarinxamarin.formsfreshmvvm

解决方案


推荐阅读