OpLiquidPosViewModel.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using Prism.Mvvm;
  2. using System.Linq;
  3. using Prism.Events;
  4. using SHJX.Service.Common.Event;
  5. using System.Collections.Generic;
  6. using SHJX.Service.Model.EventArgs;
  7. using SHJX.Service.Control.Interface;
  8. using System.Collections.ObjectModel;
  9. using SHJX.Service.Common.Constants;
  10. using SHJX.Service.Model.ControlModules;
  11. namespace SHJX.Service.Main.ViewModels
  12. {
  13. public class OpLiquidPosViewModel : BindableBase
  14. {
  15. #region Properties
  16. public ObservableCollection<CenterControlInfo> CenterControls { get; set; }
  17. #endregion
  18. public OpLiquidPosViewModel(IEventAggregator ea, IMainService service)
  19. {
  20. var positions = service.OtherPositions;
  21. CenterControls = new ObservableCollection<CenterControlInfo>();
  22. for (int i = 0; i < positions.Count; i++)
  23. {
  24. CenterControlInfo control = new()
  25. {
  26. Index = i,
  27. ControlName = positions[i].Name,
  28. TagNameText = positions[i].TagText,
  29. BackColor = ColorNames.MainColor
  30. };
  31. CenterControls.Add(control);
  32. }
  33. #region 监听
  34. ea.GetEvent<UpdateElementEvent>().Subscribe(ChangeElement);
  35. #endregion
  36. }
  37. #region Event Methods
  38. public void ChangeElement(List<ElementArgs> args)
  39. {
  40. foreach (ElementArgs arg in args)
  41. {
  42. CenterControlInfo control = CenterControls.Where(item => item.ControlName.Equals(arg.Name)).FirstOrDefault();
  43. if (control is null)
  44. {
  45. continue;
  46. }
  47. CenterControls[control.Index].CenterText = !arg.Enable ? string.IsNullOrWhiteSpace(arg.Current) ? string.Empty : arg.Current.Length < 2 ? arg.Current : arg.Current[1..] : string.Empty;
  48. CenterControls[control.Index].BackColor = !arg.Enable ? ColorNames.SentColor : ColorNames.MainColor;
  49. }
  50. }
  51. #endregion
  52. }
  53. }