noxi雑記

.NET、Angularまわりの小ネタブログ

PrismでMVVMなXamarin.Formsアプリを作成する

PrismはWindows8アプリ時代から存在する老舗のMVVMライブラリです。Prismの歴史等は他のブログを参照頂くとして、ここではXamarin.FormsアプリにPrismを組み込む方法を紹介します。

今回の環境

Prismを組み込んだXamarin.Formsアプリの作成

新規でPrismを組み込んだXamarin.Formsアプリを作成する

新規でアプリを作成する場合、Prismが提供する Prism Template Pack というVisual Studioの拡張を利用するのが簡単です。この拡張を使用すると新規プロジェクトテンプレートからXamarin.FormsとPrismが既に組み込まれたプロジェクトを作成することができます。

拡張機能の導入

まずはVisual Studioを起動し、ツール > 拡張と更新 から Prism Template Pack を検索してインストールします。

Prism Template Packのインストール

プロジェクトの作成

Visual Studioで新規プロジェクトウィンドウを開くと左のカテゴリにPrismが追加されているので、 Prism > Xamarin.Forms > Prism Blank App を選択します。

新規プロジェクト一覧のPrismテンプレート

すると対象プラットフォーム(Android/iOS/UWP)を選択するウィザードが現れます。今回はAndroid/iOS、使用するDIコンテナはUnityを選択します。

Prismプロジェクトウィザード

ここで選択する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へ設定してくれます。

おわりに

もうちょっと何か書こうかと思ったのですが、別の記事にします。適当すぎてごめんなさい。