DashBoardMainViewModel.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using CommunityToolkit.Mvvm.Input;
  2. namespace DashBoard.ViewModel;
  3. internal partial class DashBoardMainViewModel : ObservableObject
  4. {
  5. public DashBoardMainViewModel(DeviceCollection deviceCollection, IDialogService dialogService)
  6. {
  7. this._DeviceCollection = deviceCollection;
  8. this._DialogService = dialogService;
  9. this.Devices = deviceCollection.DeviceList;
  10. deviceCollection.DeviceDataList.CollectionChanged += DeviceDataList_CollectionChanged;
  11. this.DeviceDataList_CollectionChanged(deviceCollection.DeviceDataList, null);
  12. }
  13. private void DeviceDataList_CollectionChanged(object? sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs? e)
  14. {
  15. if (sender is not ObservableDictionary<Guid, DeviceData_VM> deviceList)
  16. return;
  17. this.DeviceData.Clear();
  18. foreach (DeviceData_VM device in deviceList.Values)
  19. {
  20. this.DeviceData[device.DeviceModel] ??= [];
  21. this.DeviceData[device.DeviceModel].Add(device);
  22. }
  23. }
  24. private readonly IDialogService _DialogService;
  25. private readonly DeviceCollection _DeviceCollection;
  26. [ObservableProperty]
  27. private ObservableDictionary<Guid, DeviceInfo_VM> _Devices = [];
  28. [ObservableProperty]
  29. private ObservableDictionary<DeviceModel, ObservableCollection<DeviceData_VM>> _DeviceData = [];
  30. [RelayCommand]
  31. private void Warning(DeviceData_VM device)
  32. {
  33. IDialogParameters para = new DialogParameters() { { "alarm", device.Alarms! } };
  34. this._DialogService.Show("WarningList", para, null);
  35. }
  36. }