using CommunityToolkit.Mvvm.ComponentModel; using ProgramLib.GUI.Model; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace ProgramLib.GUI.ViewModel { internal partial class LiveDataWindowViewModel : ObservableObject { public enum Images { LED_ON, LED_OFF } private Window _window; public Dictionary ImageToResourcePathDict { get { return _imageToResourcePathDict; } private set { } } private Dictionary _imageToResourcePathDict = new Dictionary() { {Images.LED_ON, @"pack://application:,,,/ProgramGui;component/Resources/Images/green-led.png" }, {Images.LED_OFF, @"pack://application:,,,/ProgramGui;component/Resources/Images/black-led.png" } }; #region Data Bindings public ObservableCollection _dataGridPowerDatatems { get; set; } // 2-dimensional data array // inner ObservableCollection<> is the columns // outer ObservableCollection is the row public ObservableCollection> _dataGridPassthroughDatatems { get; set; } [ObservableProperty] private string uutPowerLedImagePath; [ObservableProperty] private string tePowerLedImagePath; #endregion Data Bindings public LiveDataWindowViewModel(Window window) { _window = window; _dataGridPowerDatatems = new ObservableCollection(); _dataGridPassthroughDatatems = new ObservableCollection>(); UutPowerLedImagePath = _imageToResourcePathDict[Images.LED_OFF]; TePowerLedImagePath = _imageToResourcePathDict[Images.LED_ON]; } public void AddPowerData(Dictionary powerModuleToPowerDataModelDict) { foreach (var item in powerModuleToPowerDataModelDict) { _dataGridPowerDatatems.Add(item.Value); } } public void AddPassthroughData(Dictionary> rowNumberToPassthroughDataDict) { _window.Dispatcher.Invoke((Action)delegate { foreach (var item in rowNumberToPassthroughDataDict) { _dataGridPassthroughDatatems.Add(item.Value); } }); } } }