KAMISHIBAI for Xamarin.Formsは、MVVMパターンをサポートする画面遷移ライブラリです。
KAMISHIBAIはXamarin.Formsの機能を一切制限せず、つぎの機能拡張を行います。
- 型安全性の保障された画面遷移時パラメーター
- 画面遷移にともなう適切なイベント通知
- ViewModel起点による画面遷移のサポート
Xamarin.Formsで実現可能なあらゆる画面遷移は、KAMISHIBAIを利用することで、より簡単に実現する事ができます。
そして既存のあらゆるMVVMフレームワークと同居が可能です。ただしひとつだけ制約が発生します。
画面遷移にはKAMISHIBAIを利用してください。
画面遷移を実現するにあたり、KAMISHIBAIの最大の特徴は、利用者から見てモノリシックな一枚岩な構造ではなく、役割を分割して実現していることにあります。
- ViewModel層から画面遷移要求を発信する
- 画面遷移要求を受け、View層で画面遷移する
これらを組み合わせることで画面遷移を実現しています。それぞれについて概略をみていきましょう。
画面遷移要求を発信するには、INavigationRequestを利用します。
実行されたCommandから、SecondPageページへの画面遷移を要求する場合、ViewModeに次のように記載します。
public ICommand NavigateCommand => new Command(() => RequestSecondPage.RaiseAsync());
public INavigationRequest RequestSecondPage { get; } = new NavigationRequest();<?xml version="1.0" encoding="utf-8" ?>
<ContentPage ...>
<ContentPage.Behaviors>
<mvvm:PushModalAsync Request="{Binding RequestSecondPage}" x:TypeArguments="views:SecondPage"/>
</ContentPage.Behaviors>
<StackLayout>
<Button Text="Navigate to Second" Command="{Binding NavigateCommand}"/>
</StackLayout>
</ContentPage>PushModalAsyncビヘイビアに注目してください。
<mvvm:PushModalAsync Request="{Binding RequestSecondPage}" x:TypeArguments="views:SecondPage"/>RequestSecondPageの遷移要求を受けて、x:TypeArgumentsで指定されたSecondPageへモーダル遷移します。
KAMISHIBAIではViewModelからの要求を受けて、ビヘイビアで画面遷移を行います。
もちろんINavigationの全てのメソッドに対応するビヘイビアはあらかじめ用意されていますし、自ら作成することも可能です。
このためKAMISHIBAIではXamarin.Formsで可能な、あらゆる画面遷移を実現することが可能です。
さらにKAMISHIBAIでは、つぎのような魅力的な機能を提供しています。
- 型安全性の保障された画面遷移時パラメーター
- 画面遷移における、一貫性と再帰性を伴ったイベント通知
つぎのようなケースで画面遷移をハンドルすることは、他のケースと比較して困難ですが、KAMISHIBAIであれば一貫性を保った通知を実現します。
- 物理バックキーの押下やスワイプ
- TabbedPageやCarouselPageのタブ(ページ)の切り替え
- アプリケーションのSleep、Resume
また、MasterDetailPageやTabbedPageなどはPageをネストします。それらの多階層化した画面の末端まで再帰的にイベントを通知します。
KAMISHIBAIに興味をもっていただけましたか?
KAMISHIBAIでは、あなたをサポートする次のコンテンツを提供しています。
さあ、Xamarin.Formsで最も自由な画面遷移ライブラリを使ってみましょう!
- How to install
- Documents
- Samples
NuGetからインストールしてください。
> Install-Package Kamishibai.Xamarin.Forms