Skip to content
分类目录:

CommunityToolkit.Mvvm

Post date:
Author:

https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/mvvm/generators/overview

<PackageReference Include=”CommunityToolkit.Mvvm” Version=”8.2.0″ />

Summary:

该库主要用于在Maui中,方便的设置ViewModel中的绑定的属性和命令。

使用:

// 需要使用partial关键字
[ObservableObject]
 public partial class MainPageViewModel
 {
    // 添加此注解后,会自动生成具有通知能力的Title属性
     [ObservableProperty]
     string title;

    // 给私有方法添加此注解后,会自动生成CounterCommand属性,
    // 并绑定到此方法,且能识别带参数和不带参数的方法。
    // 且此方法的返回值也可以是Task
     [RelayCommand]
     private void Counter(string str)
     {
         this.Title = str+Guid.NewGuid().ToString(); 
     }

     
 }
[ObservableProperty]
private string? name;

partial void OnNameChanging(string? value)
{
    Console.WriteLine($"Name is about to change to {value}");
}

partial void OnNameChanged(string? value)
{
    Console.WriteLine($"Name has changed to {value}");
}
[ObservableProperty]
 [NotifyCanExecuteChangedFor(nameof(LoginCommand))]
 private string username;

[RelayCommand(CanExecute = nameof(CanLoginExecute))]
public async Task Login(string para, CancellationToken cancellationToken)
{
    HttpClient httpClient = new HttpClient();
    await httpClient.GetAsync("https://www.baidu.com", HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(false);
    MessageBox.Show(para);
}

private bool CanLoginExecute()
{
    if (string.IsNullOrEmpty(Username))
    {
        return false;
    }
    if (Username.Length <= 3)
    {
        return false;
    }
    return true;
}

豫ICP备2021008859号-1