🧩

Partial Observable Property

2024/11/27に公開

https://youtu.be/Tu7asErZc54?si=zdzp2qJMQrceQkV0

.NET 9のリリースに部分プロパティが盛り込まれ、早速CommunityToolkit.MvvmNuGetパッケージのv8.4.0-preview2もリリースされました。

これにより、部分プロパティを活用したObservablePropertyが使えるようになりました。

具体的には、
これまでは以下のように自分でフィールドを書き、ソースジェネレーターにプロパティを書いてもらってましたが...

using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.UI.Xaml.Controls;

namespace CommunityToolkitMvvmPartialProperty;

public partial class SomeViewModel : ObservableObject
{
    [ObservableProperty]
    private string? _someText;
}
生成コード

v8.4.0-preview2では、以下のように自分で部分プロパティを書き、ソースジェネレーターに実装を書いてもらえるようになりました。

using CommunityToolkit.Mvvm.ComponentModel;
using Microsoft.UI.Xaml.Controls;

namespace CommunityToolkitMvvmPartialProperty;

public partial class SomeViewModel : ObservableObject
{
    [ObservableProperty]
    public partial string? SomeText { get; set; }
}
生成コード

メリットとしては、

  • フィールド(_someText)ではなく、XAMLで実際にバインディングするプロパティ(SomeText)を書くのでコードがより直観的になった
  • プロパティ名で検索しやすくなった
  • プロパティのsetterをprivateにできる(TwoWayバインディングをできなくする)
    public partial string? SomeText { get; private set; }
    

デメリットとしては、
...今のところは思いつきません。

今回は以上です。

Happy Coding!😊

GitHubで編集を提案

Discussion