using Prism.Mvvm; using System.Linq; using Prism.Events; using Prism.Commands; using System.Windows; using Panuon.UI.Silver; using SHJX.Service.Common.Event; using SHJX.Service.Common.Interface; using SHJX.Service.Control.Interface; using SHJX.Service.Model.CRUDModules; using System.Collections.ObjectModel; namespace SHJX.Service.Shell.ViewModels.Setting { public class HeatingSettingWindowViewModel : BindableBase { #region Field private readonly ILogService _log; private readonly IEventAggregator _ea; private readonly ISettingService _service; #endregion #region Property private double _dissolveTemperatureValue; public double DissolveTemperatureValue { get => _dissolveTemperatureValue; set => SetProperty(ref _dissolveTemperatureValue, value); } private double _titrationTemperatureValue; public double TitrationTemperatureValue { get => _titrationTemperatureValue; set => SetProperty(ref _titrationTemperatureValue, value); } private Visibility _temperatureValueChangedTextVisibility; public Visibility TemperatureValueChangedTextVisibility { get => _temperatureValueChangedTextVisibility; set => SetProperty(ref _temperatureValueChangedTextVisibility, value); } public ObservableCollection Pids { get; set; } public ObservableCollection ExecuteTimes { get; set; } #endregion public HeatingSettingWindowViewModel(IEventAggregator ea, ILogService log, ISettingService service) { _ea = ea; _log = log; _service = service; DissolveTemperatureValue = _service.DissolveTemperatureValue; TitrationTemperatureValue = _service.TitrationTemperatureValue; TemperatureValueChangedTextVisibility = Visibility.Hidden; Pids = new ObservableCollection(_service.GetData()); ExecuteTimes = new ObservableCollection(_service.GetData()); _ea.GetEvent().Subscribe(UpdateSetting); _ea.GetEvent().Subscribe(() => { _ea.GetEvent().Unsubscribe(UpdateSetting); }); } #region Command private DelegateCommand _temperatureValueChangedCommand; public DelegateCommand TemperatureValueChangedCommand => _temperatureValueChangedCommand ??= new DelegateCommand(ExecuteTemperatureValueChangedCommand); #endregion #region Execute private void ExecuteTemperatureValueChangedCommand() { TemperatureValueChangedTextVisibility = Visibility.Visible; } #endregion #region Method public void UpdateSetting() { var ret = _service.UpdateSetting(Pids.ToList()); ret = ret && _service.UpdateSetting(ExecuteTimes.ToList()); _service.UpdateDissolveTemperatureValue(DissolveTemperatureValue); _service.UpdateTitrationTemperatureValue(TitrationTemperatureValue); Notice.Show($"设备相关设置更新{(ret ? "成功" : "失败")}", "Info", 3, Panuon.UI.Silver.MessageBoxIcon.Info); } #endregion } }