Introduction
WPF や UWP で使っている Prism を .NET MAUI で使用するためのメモ。
サンプルソースは、GitHub に置きました。
How to use?
基本は Prism.Maui のサンプルに従えばいいが、サンプルが色々ごちゃごちゃしているので、最低限の実装に絞ったミニマルなサンプルを作った。
- ViewModel
- BindableBase を継承したもの
- Moduleは使わない
- .NET MAUI のデフォルトサンプルを MVVM に書き直すだけ
必要なもの
MAUI のサンプルプロジェクトを作ったら、サンプルのプロジェクト配下で下記を実行。
1 | dotnet add package Prism.Maui --version 8.1.273-pre |
現時点 (2022/10/23) でこれらはプレリリース版しか存在せず、開発者の Dan Siegel 曰く
Q. Is this Production Ready?
A. In general I would say anything serious with MAUI should wait for .NET 7. This is absolutely great for POCs.
引用: https://dansiegel.net/post/2022/06/02/prism-for-net-maui-public-beta
とのこと。
正式版は .NET 7 までお預けと思われる。
コード
View と ViewModel はそこまで重要じゃないのざっくり。
Prism のお作法に倣い、Views フォルダと ViewModels フォルダにファイルを配置するだけなので。
1 | using Demo.ViewModels.Interfaces; |
肝は下記の 2 つ
- MauiProgram.cs の修正
- AppShell.xaml の削除
MauiProgram.cs
公式のサンプルほぼそのままだが、Module を抜いたりしているので少しシンプル
1 | using System; |
containerRegistry.RegisterGlobalNavigationObserver();
と AddGlobalNavigationObserver
のステートメントは必須ではない。
ここを削除すれば、Prism.Maui.Rx
も不要になる。
AppShell.xaml の削除
そのまま。AppShell.xaml
と AppShell.xaml.cs
は削除し、App.xaml.cs
を下記のように修正。
1 | using Microsoft.Maui.Controls; |
これをやっておかないと、実行時にエラーになります。
実行結果
MVVM にしただけなので、見た目は変わりませんが…
Source Code
https://github.com/takuya-takeuchi/Demo/tree/master/MAUI/01_Prism