PrismでMVVMなXamarin.Formsアプリを作成する
PrismはWindows8アプリ時代から存在する老舗のMVVMライブラリです。Prismの歴史等は他のブログを参照頂くとして、ここではXamarin.FormsアプリにPrismを組み込む方法を紹介します。
今回の環境
- Visual Studio 2017 (15.6.1)
- Xamarin.Forms 2.5.x
- Prism 7.0.x
Prismを組み込んだXamarin.Formsアプリの作成
新規でPrismを組み込んだXamarin.Formsアプリを作成する
新規でアプリを作成する場合、Prismが提供する Prism Template Pack
というVisual Studioの拡張を利用するのが簡単です。この拡張を使用すると新規プロジェクトテンプレートからXamarin.FormsとPrismが既に組み込まれたプロジェクトを作成することができます。
拡張機能の導入
まずはVisual Studioを起動し、ツール > 拡張と更新 から Prism Template Pack
を検索してインストールします。
プロジェクトの作成
Visual Studioで新規プロジェクトウィンドウを開くと左のカテゴリにPrismが追加されているので、 Prism > Xamarin.Forms > Prism Blank App
を選択します。
すると対象プラットフォーム(Android/iOS/UWP)を選択するウィザードが現れます。今回はAndroid/iOS、使用するDIコンテナはUnityを選択します。
ここで選択するContainerはDIコンテナです。DI(Dependency Injection)を知らない方は、DIコンテナを使用すると面倒くさいオブジェクトの生成や破棄を代わりに行ってくれる便利なもの、と認識してください。このウィザードで選択できるDIコンテナは Autofac
Dryloc
Unity
の3つです。
プロジェクトを生成すると PrismApp1
PrismApp1.Android
PrismApp1.iOS
の3プロジェクトが生成されます。
XamarinテンプレートとPrismテンプレートで作成する時の差
通常のXamarin.Formsテンプレートと、PrismのXamarin.Formsテンプレートで作成するアプリは、共通ライブラリの App.xaml
App.xaml.cs
およびView、ViewModelのディレクトリが異なる点です。AppはPrismが使用するDIコンテナの初期設定やPrismのナビゲーションに使用する NavigationService
の設定が含まれます。またPageは Views
、ViewModelは ViewModels
ディレクトリにそれぞれHogePage、HogePageViewModelと名前を合わせて配置することでページ初期化時に自動でViewModelをページのDataContextへ設定してくれます。
おわりに
もうちょっと何か書こうかと思ったのですが、別の記事にします。適当すぎてごめんなさい。