Files
WCS/Plugins/Driver/Cowain.Driver/ViewModels/VariableViewModel.cs
2026-03-02 09:08:20 +08:00

113 lines
2.6 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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<VariableViewModel>? dataChanged;//数据改变事件
public void Register(Action<VariableViewModel> action)
{
dataChanged += action;
}
public void UnRegister(Action<VariableViewModel> action)
{
if (dataChanged == null)
{
return;
}
if (action == null)
{
return;
}
dataChanged -= action;
}
/// <summary>
/// 数据改变方法
/// </summary>
/// <param name="var"></param>
private void OnDataChange()
{
if (dataChanged != null)
{
dataChanged(this);
}
}
}