使用する
- フレッシュ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 を使用したカスタム ナビゲーション サービスだけが思い浮かびますが、それらの例は次のいずれかです。
- ログイン ページ ナビゲーションと MainPage ナビゲーションの境界
- タブ付きビュー
私が持っているページフローの例は
- ホームページ (非モーダル)
- ValueHistoryPage (非モーダル)
- ConfigureValueDevicePage (モーダル)
- ChooseValueDeviceModelPage (モーダル)
- ConnectValueDevicePage (モーダル)
この時点で、ユーザーは ValueDevice を構成したが、まだ使用したくないと判断できるので、ValueHistoryPage に戻ります。これは、すべてのモーダルを閉じて、ValueHistoryPage が TopMost になるようにするか、次の新しいナビゲーション セットを開始することを意味します。 CaptureFromValueDevicePage ( modal ) AND は、前の 3 つのモーダル セット (ConfigureValueDevicePage、ChooseValueDeviceModelPage、および ConnectValueDevicePage ) を閉じます。
Modals の最初のセットは 1 つのカスタム IFreshNavigationService にあり、潜在的に CaptureFromValueDevicePage は別の IFreshNavigationService にありますか?
タブ付きビューまたはログイン関連ではない IFreshNavigationService の例はありますか?