PR

.NET MAUI MVVM,データバイディングの準備

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でのバインティングのプロパティ名として使用する。コードビハインドでも先頭が大文字のプロパティ名を使う。

コメント