Communitytoolkit社区工具给我们开发带来了极大的方便,堪称魔法,非常好用,可以极大的提升企业和个人的开发效率,标注方法[ObservableProperty]、[RelayCommand]和一个方法SetProperty,下面举个例子演示一下。
写一个枚举 Microsoft.Maui.Graphics空间下类Colors的命名颜色,共148个公共静态字段,建一个maui程序名为NamedColorsDemoApp,先在文件夹/Models下建一个模型,NamedColor.cs,文件内容:
namespace NamedColorsDemoApp.Models
{
internal class NamedColor
{
public string Name { get; set; }
public Color Color { get; set; }
}
}
在程序内Nuget二个包
然后在文件夹/ViewModels 下创建NamedColorsViewModel.cs文件,文件头内容:
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using NamedColorsDemoApp.Models;
using System.Collections.ObjectModel;
using System.Reflection;
这个类要派生自ObservableObject,且要设成分部类。
partial class NamedColorsViewModel : ObservableObject
{
}
创建一个私有的字段 private NamedColor namedColor,再创建一个列表字段allColors,这个带标注方法[ObservableProperty]
private NamedColor namedColor;
[ObservableProperty]
private static ObservableCollection<NamedColorsViewModel> allColors;
再创建二个可绑定的属性,使用SetProperty,这个太方便了。
public string Name
{
get => namedColor.Name;
set => SetProperty(namedColor.Name, value, namedColor, (n, v) => n.Name = v);
}
public Color Color
{
get => namedColor.Color;
set => SetProperty(namedColor.Color, value, namedColor, (n, v) => n.Color = v);
}
SetProperty第一个参数是要更新的值,第二个参数是新值,第三个参数是模型,传一个实例,第四个