【.NET MAUI】CommunityToolkit でMVVM

昨日の記事では、.NET MAUI MVVM の実装を試みました。しかし現在様々なベンダーから MVVM デザインパターンをサポートするフレームワークが提供されており、これらを使えば容易にMVVM での開発を行なえます。今回は、CommunityToolkit を使って、.NET MAUI のサンプルを MVVM 化したいと思います。

 

docs.microsoft.com

 

CommunityToolkit はプラットフォームやランタイムに依存せず、高パフォーマンスを期待できるフレームワークです。Visual Studio .NET MAUI のプロジェクトを新規作成後、ソリューションエクスプローラでプロジェクトを選択し右クリック。ショートカットメニューから「NuGet パッケージの管理(N)」をクリックします。

 

「参照」タブを選択、「検索」に ToolKit.MVVM と入力すると、「CommunityToolkit.MVVM」がヒットします。このパッケージをプロジェクトにインストールします。似たようなパッケージでMicrosoft.Toolkit.MVVM」がありますが、こちらと間違えないよう注意ください。

 

これで CommunityToolkit の用意はできました。次にプロジェクトにビューモデルを追加します。実装は以下のとおり。CommunityToolkit で提供されている ObservableObject クラスを継承してビューモデルを構築しています 。昨日のビューモデルの実装と比較すると、かなりシンプルなコードになっているのがわかります。

CommunityToolkit.Mvvm での ViewModel サンプル

 

docs.microsoft.com

 

通知プロパティのセッターの実装を簡略化する SetProperty メソッド。また ViewModel のコマンドをサポートする RelayCommand クラスが提供されているので、これらを使うとコードがホントにすっきりしますね。

 

ビューは昨日と同じコード。ビューモデルとバインドします。

ビューをビューモデルとバインドさせる

 

実行するとこうなる。。。

 

私は WPF での開発を続けているので MVVM フレームワークに長らく Livet を使ってきましたが、選択肢の幅が広がるのはいいことです。これもなかなか良さげな感がありますね。