WorkAreaViewModel.cs 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using CommunityToolkit.Mvvm.ComponentModel;
  2. using Mini8SlaveSim.Services;
  3. using Mini8SlaveSim.Views;
  4. using System.Collections.ObjectModel;
  5. using System.Windows.Controls;
  6. namespace Mini8SlaveSim.ViewModels
  7. {
  8. public partial class WorkAreaViewModel : ObservableObject
  9. {
  10. private readonly ISlaveManagementService _slaveManagementService;
  11. [ObservableProperty]
  12. private ObservableCollection<TabItem> _tabs = [];
  13. [ObservableProperty]
  14. private int _selectedTabIndex = -1;
  15. public WorkAreaViewModel(ISlaveManagementService slaveManagementService)
  16. {
  17. _slaveManagementService = slaveManagementService;
  18. _slaveManagementService.SlaveAdded += OnSlaveAdded;
  19. }
  20. private void OnSlaveAdded(object? sender, byte e)
  21. {
  22. App.Current.Dispatcher.Invoke(() =>
  23. {
  24. Tabs.Add(new TabItem()
  25. {
  26. Header = $"Slave ID:{e}",
  27. Content = new Mini8Tab()
  28. });
  29. SelectedTabIndex = 0;
  30. });
  31. }
  32. }
  33. }