HeatingSettingWindowViewModel.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. using Prism.Mvvm;
  2. using System.Linq;
  3. using Prism.Events;
  4. using Prism.Commands;
  5. using System.Windows;
  6. using Panuon.UI.Silver;
  7. using SHJX.Service.Common.Event;
  8. using SHJX.Service.Common.Interface;
  9. using SHJX.Service.Control.Interface;
  10. using SHJX.Service.Model.CRUDModules;
  11. using System.Collections.ObjectModel;
  12. namespace SHJX.Service.Shell.ViewModels.Setting
  13. {
  14. public class HeatingSettingWindowViewModel : BindableBase
  15. {
  16. #region Field
  17. private readonly ILogService _log;
  18. private readonly IEventAggregator _ea;
  19. private readonly ISettingService _service;
  20. #endregion
  21. #region Property
  22. private double _dissolveTemperatureValue;
  23. public double DissolveTemperatureValue
  24. {
  25. get => _dissolveTemperatureValue;
  26. set => SetProperty(ref _dissolveTemperatureValue, value);
  27. }
  28. private double _titrationTemperatureValue;
  29. public double TitrationTemperatureValue
  30. {
  31. get => _titrationTemperatureValue;
  32. set => SetProperty(ref _titrationTemperatureValue, value);
  33. }
  34. private Visibility _temperatureValueChangedTextVisibility;
  35. public Visibility TemperatureValueChangedTextVisibility
  36. {
  37. get => _temperatureValueChangedTextVisibility;
  38. set => SetProperty(ref _temperatureValueChangedTextVisibility, value);
  39. }
  40. public ObservableCollection<PID> Pids { get; set; }
  41. public ObservableCollection<ExecuteTime> ExecuteTimes { get; set; }
  42. #endregion
  43. public HeatingSettingWindowViewModel(IEventAggregator ea, ILogService log, ISettingService service)
  44. {
  45. _ea = ea;
  46. _log = log;
  47. _service = service;
  48. DissolveTemperatureValue = _service.DissolveTemperatureValue;
  49. TitrationTemperatureValue = _service.TitrationTemperatureValue;
  50. TemperatureValueChangedTextVisibility = Visibility.Hidden;
  51. Pids = new ObservableCollection<PID>(_service.GetData<PID>());
  52. ExecuteTimes = new ObservableCollection<ExecuteTime>(_service.GetData<ExecuteTime>());
  53. _ea.GetEvent<UpdateSettingEvent>().Subscribe(UpdateSetting);
  54. _ea.GetEvent<SettingClosingEvent>().Subscribe(() =>
  55. {
  56. _ea.GetEvent<UpdateSettingEvent>().Unsubscribe(UpdateSetting);
  57. });
  58. }
  59. #region Command
  60. private DelegateCommand _temperatureValueChangedCommand;
  61. public DelegateCommand TemperatureValueChangedCommand => _temperatureValueChangedCommand ??= new DelegateCommand(ExecuteTemperatureValueChangedCommand);
  62. #endregion
  63. #region Execute
  64. private void ExecuteTemperatureValueChangedCommand()
  65. {
  66. TemperatureValueChangedTextVisibility = Visibility.Visible;
  67. }
  68. #endregion
  69. #region Method
  70. public void UpdateSetting()
  71. {
  72. var ret = _service.UpdateSetting(Pids.ToList());
  73. ret = ret && _service.UpdateSetting(ExecuteTimes.ToList());
  74. _service.UpdateDissolveTemperatureValue(DissolveTemperatureValue);
  75. _service.UpdateTitrationTemperatureValue(TitrationTemperatureValue);
  76. Notice.Show($"设备相关设置更新{(ret ? "成功" : "失败")}", "Info", 3, Panuon.UI.Silver.MessageBoxIcon.Info);
  77. }
  78. #endregion
  79. }
  80. }