- 素のXamarin.FormsにPrismを適用することで、Prismの基本を理解する
- Appの親クラスをPrismApplicationに変更する
- DIコンテナにMainPageを登録する
- Mainページへ画面遷移する
なお今回は、DIコンテナにAutofacを利用する想定で進めます。
App.xaml
<?xml version="1.0" encoding="utf-8" ?>
<autofac:PrismApplication xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:autofac="clr-namespace:Prism.Autofac;assembly=Prism.Autofac.Forms"
x:Class="PrismHandsOn.App">
</autofac:PrismApplication>
ルート要素をautofac:PrismApplicationに変更し、名前空間として「xmlns:autofac~」を追記してください。
App.xaml.cs
using System;
using Prism.Ioc;
using PrismHandsOn.Views;
using Xamarin.Forms;
namespace PrismHandsOn
{
public partial class App // : Application 宣言を削除する。
{
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
}
protected override void OnInitialized()
{
}
}
}
XAML側で親クラスを指定していて(XAMLのルート要素が親クラスを表し、今回はPrismApplicationが該当する)、xaml.cs
側では親クラスの指定は不要なため削除します。
また元々実装されていたメソッド群を削除し、OnInitialized
とRegisterTypes
の二つのメソッドを定義してください。
初期画面を遷移するため、DIコンテナへMainPage
のクラスをNavigation対象のクラスとして追加します。
App.xaml.cs
protected override void RegisterTypes(IContainerRegistry containerRegistry)
{
containerRegistry.RegisterForNavigation<MainPage>();
}
つづいて、初期画面への画面遷移処理を実装します。
App.xaml.cs
protected override void OnInitialized()
{
NavigationService.NavigateAsync(nameof(MainPage));
}
ここまで一旦デバッグ実行し、動作を確認します。 先ほどと同じ画面が表示されれば、Prismのアプリケーションへの適用完了です。
Prismでは画面遷移にはINavigationService
を利用し、画面遷移名を指定して遷移させます。
今回はRegisterForNavigation
にMainPage
を登録しています。デフォルトでは画面名=遷移名となるため、上記のコードでは遷移名としてnameof(MainPage)
を指定しています。
画面クラスの名称と遷移名のマッピングは変更可能な為、画面名と遷移名は明確に区別してとらえる必要があります。