1.0.0をリリースしました。WPFを中心に書いています。Technologies。1.0.0をリリースしました。KAMISHIBAIここしばらく作っては消しを繰り返していた、お手製画面遷移ライブラリをリリースしました。コードとドキュメントはGithub上に公開しています。利用の際はNuGetからインストールして利用してください。目指したのはXamarin.Formsで可能なあらゆる画面遷移が実現可能でタブ切り替えを含むPageが切り替わるタイミングで、一貫性のある画面遷移イベントが通知され型安全に画面遷移パラメーターを受け渡せてちゃんとViewとViewModelが分離できる画面遷移ライブラリです。実際にコードを見ていただいた方が良いでしょう。DateTime型を引数に画面遷移するシナリオを考えます。ViewModelです。RequestSecondPage.RaiseAsync(selectedDate);}見ての通り、ViewModelからはパラメーターを渡して遷移要求をあげるだけで、遷移処理そのものは記述しません。遷移処理はXAMLに書きます(C#で書いても良いですが)。</ContentPage.Behaviors>PushModalAsyncビヘイビアに注目してください。RequestSecondPageから遷移要求を受け、SecondPageへ、PushModalAsyncで画面遷移する事が理解できるでしょう。値を受け取るのは、遷移イベントの通知で受け取ります。}ここまでで興味をもっていただけた方は、良かったらチュートリアルをお試しください。大雑把なアーキテクチャモデルは次のとおりです。NavigatorクラスがXamarin.Forms.INavigationをラップし、イベント通知と遷移パラメーターの受け渡しを実現しています。画面遷移はViewModel層でNavigationRequestを利用して画面遷移要求をView層にあげる事から始まります。NavigationRequestはPushAsyncやPopAsyncなど、NavigationBehaviorを継承したBehaviorにバインドされており、NavigationRequestからの要求を受けて、BehaviorがNavigatorクラスを呼び出して画面遷移します。流れ的には以下のようなイメージです。NavigationBehaviorを継承して独自の遷移処理を実装すれば、アーキテクチャ上、Xamarin.Formsで実装可能な画面遷移は全て実現可能です。アーキテクチャについては、もう少し詳細な情報をこちらに記載しています。ところで本当に「Xamarin.Formsで可能なあらゆる画面遷移が実現可能」なのでしょうか?ということで、ちょっと前に感動したMasterDetailPageの設計パターンに適用してみました。元記事はこちらになります。qiita.comこんなMasterDetailPageを作ります。DrawerからHome以外を選択して画面遷移した後、戻るボタンでHomeへ戻るDrawerからHome以外を複数回選択して画面を切り替えても、戻るボタンを押すとHomeへ戻るその間、左上のボタンはずっとハンバーガーメニューの状態になっているHomeを表示した状態で戻るボタンを押すと、Androidのホームに戻るDrawerから選択した画面から、ドリルダウンで詳細へ遷移すると左上のボタンは矢印ボタンになるXamarin.FormsのデフォルトのMasterDetailPageだとちょっと面倒な仕様ですが、Detail側でNavigationPageを2段階にネストして利用することで実現されています。詳細な解説は先に紹介したQiitaの記事をご覧ください。Qiitaの記事ではView層でガッツリ実装されていますが、これをKAMISHIBAIを適用しつつ、ViewとViewModelを分離します。分離して実装したサンプルコードがこちらにあります。github.comここのSpecialMasterDetailPageソリューションを参照してください。ViewとViewModelが分離されているのが見て取れると思います。解説は次回にでも行いたいと思います。それでは今回はここまで。1.0.0をリリースしました。Overview久しぶりにJXUGでしゃべらせていただきました。完全に物理バッ...2017-04-09【メモ】PrismでMasterDetailPageと付き合うコツそのうち、きっちりまとめ直しますがひとまずメモを。(1)はてなブログをはじめよう!nuitsjpさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。