はじめに
Windowsでは、Prism Template packがあるので、プロジェクト作成時にPrismを選択できるので
特に初期設定は不要ですが、VS for MACではPrism Template Packがないので、手動で設定する必要があります。
色々な設定を行う必要があるので、備忘録として記載しておきます。
環境によっては微妙な違いがあると思います。
Xamarin.Formsでprismを使うには毎回設定が必要になります。
プロジェクトの作成
まずは、 Xamarin.Formsを選択して、アプリ名を設定します。ここでは、prismXamarinとしました。
次は、プロジェクト名とソリューション名を確認して、作成ボタンを押下します。
パッケージを追加する
Manage NuGet Packagesを選択してPrism.Unity.Formsを選択します。右下のパッケージの追加ボタンを押下します。パッケージをプロジェクトに追加します。
すべてのプロジェクトにチェックを入れ、OKボタンを押下します。
パッケージの追加処理は、少々時間が必要になります。
場合によってはエラーが発生するのでプロジェクトを再起動した方が良いです。
プロジェクトの構成を変更する
prismXamarinプロジェクトにViewsとViewModelsフォルダを追加します。
ViewsフォルダにMainPage.xamlとMainPage.xaml.csを移動します。
(MainPage.xamlをドラッグ&ドロップすると2つのファイルを移動できます)
MainPage.xamlとMainPage.xaml.csを変更
MainPage.xamlの名前空間に.Viewsを追加します。
MainPage.xamlのx:ClassにViewsを追加します。MainPageViewModelクラスを追加する
ViewModelsフォルダに新しくMainPageViewModelクラスを新規作成します。
※ViewModelsフォルダ上で右クリックし、追加->新しいクラスを選択します。
MainPageViewModel.csへの追加
usingの追加
using Prism.Mvvm;
using Prism.Navigation;
using Prism.Navigation;
を追加します
継承するクラスの追加
BindableBase, IInitialize, INavigationAware, IDestructibleを追加します
メンバ変数?を追加する
protected INavigationService NavigationService { get; private set; }を追加します。
コンストラクタを変更する
INavigationServie型を引数に追加し、メンバ変数に渡します。
メソッドを追加する
Initialize, OnNavigatedFrom, OnNavigatedTo, Destroyを追加します。
App.xamlを変更する
Applicationタグをprism:PrismApplicationに変更します。
xmlns:prism="http://prismlibrary.com"を追加します。
App.xaml.csを変更する
using の追加と削除
下図のようにします。
クラスの継承を削除
Applicationクラスを継承しないように削除します。
メソッドの追加と削除
・OnInitializedとRegisterTypesメソッドを追加します。
・OnStart,OnSleep,OnResumeメソッドを削除します。
コンストラクタ
・App()からImitilizedComponentをOnInitializedメソッドに移動します。
・MainPage = new MainPage()を削除します。
OnInitializedメソッドに処理を追加
RegisterTypesメソッドに処理を追加
変更前と変更後
変更前