You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何同时使用MVVM Toolkit的ObservableProperty与ObservableValidator?

同时兼顾MVVM社区工具包的验证功能与源生成特性的解决方案

你可以直接将数据验证特性标注在[ObservableProperty]标记的私有字段上,这样既能保留源生成器自动生成属性、OnXXXChanged()分部方法的特性,又能实现基于ObservableValidator的数据验证。

具体实现示例

public class YourViewModel : ObservableValidator
{
    [ObservableProperty]
    [Required(ErrorMessage = "You must enter a name.")]
    [MinLength(2)]
    [MaxLength(100)]
    private string name;

    // 直接实现自动生成的分部方法,处理属性变更逻辑
    partial void OnNameChanged(string? oldValue, string? newValue)
    {
        // 这里编写属性变化后的自定义逻辑,比如联动其他属性、记录日志等
    }
}

原理说明

  • MVVM社区工具包的源生成器会识别标记了[ObservableProperty]的私有字段,自动生成对应的公开属性(此处为Name),同时将字段上的验证特性自动应用到生成的属性上。
  • 由于你的ViewModel继承了ObservableValidator,生成的属性setter会自动调用带验证参数的SetProperty重载,触发数据验证,UI端会正常显示红色提示框与错误信息。
  • 源生成器依然会自动生成OnNameChanged()分部方法,你只需按上面的方式实现该方法即可,无需手动编写完整属性,避免了之前的错误。

额外说明

如果需要自定义更复杂的验证逻辑,除了数据注解特性,你还可以:

  • 重写ObservableValidator的ValidateProperty方法,添加自定义验证规则
  • 使用[CustomValidation]特性指定自定义验证类

内容的提问来源于stack exchange,提问作者Mike Heggie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 03:24:54