MVVMには、Xamarin.Formsの時使っていたPrismでなく、.NET MAUI Markup Community Toolkit を使うことにする。
インストールするパッケージ
・.NET MAUI Community Toolkit
・.NET MAUI Markup Community Toolkit
cf.)
チュートリアル — C# マークアップと Community Toolkit を使用して .NET MAUI アプリを作成する – Windows apps | Microsoft Learn
データ バインディングと MVVM – .NET MAUI | Microsoft Learn
MAUI(WinUI3)でMVVMを超単純にやる #C# – Qiita
.NET MAUI Community Toolkit – マークアップ – Community Toolkits for .NET | Microsoft Learn
Xamarin.Formsの時に習って、xamlとコードビハインドは、Viewというフォルダーを作成してそちらに移す。xamlを移動するとコードビハインドも付いていく。移動後、InitializeComponent が無い旨のエラーが表示されるが、Visuau Studio を一度閉じて、再度起動すると直る。
XAMLのViewModelとの繋がりの部分
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:viewModels="clr-namespace:ProjectName.ViewModels"
x:Class="ProjectName.MainPage"
x:DataType="local:viewmodels:MainViewModel">
<ContentPage.BindingContext>
<viewModels:MainViewModel />
</ContentPage.BindingContext>
x:DataType にviewmodelsを入れておくと、Bindingを入力するときにインテリセンスが表示される。
ViewModel でバインドを記述する場合、従来よりシンプルに短い記述で済む。例えば、
private string a1 = "☆";
public string A1
{
get { return _a1; }
set {
SetProperty(ref a1, value);
}
}
↓
[ObservableProperty]
public string a1 = "☆";
[ObservableProperty] での変数名は小文字で、先頭1文字を大文字にしたプロパティ名が作成されXAMLでのバインティングのプロパティ名として使用する。コードビハインドでも先頭が大文字のプロパティ名を使う。
コメント