using CommunityToolkit.Mvvm.ComponentModel; using Plugin.Cowain.Driver.Models.Enum; namespace Plugin.Cowain.Driver.ViewModels; public partial class VariableViewModel : ObservableObject { [ObservableProperty] private int _id; [ObservableProperty] private int _deviceId; [ObservableProperty] private string _deviceName = string.Empty; [ObservableProperty] private string _name = string.Empty; [ObservableProperty] private string _address = string.Empty; [ObservableProperty] private string _desc = string.Empty; [ObservableProperty] private DataTypeEnum _dataType; [ObservableProperty] private int _arrayCount; [ObservableProperty] private string _json = string.Empty; [ObservableProperty] private OperModeEnum _operMode; [ObservableProperty] private bool _alarmEnable; [ObservableProperty] private string _alarmValue = string.Empty; [ObservableProperty] private string _alarmMsg = string.Empty; [ObservableProperty] private int _alarmGroup; [ObservableProperty] private int _alarmLevel; private string? _value; public string? Value { get { return _value; } set { SetProperty(ref _value, value); if (value != null) { UpdateTime = DateTime.Now; } if (OldValue != _value) { //触发数据改变事件 OnDataChange(); } //if (!string.IsNullOrEmpty(OldValue) && !OldValue.Equals(_value)) //{ // //OldValue不为空且不等于新值,触发数据改变事件 // OnDataChange(); //} OldValue = value; } } [ObservableProperty] private string? _oldValue; [ObservableProperty] private DateTime _updateTime = DateTime.MinValue; [ObservableProperty] private string? _message; [ObservableProperty] private bool _isSuccess; private Action? dataChanged;//数据改变事件 public void Register(Action action) { dataChanged += action; } public void UnRegister(Action action) { if (dataChanged == null) { return; } if (action == null) { return; } dataChanged -= action; } /// /// 数据改变方法 /// /// private void OnDataChange() { if (dataChanged != null) { dataChanged(this); } } }