using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using GSS2.Core.Hardware; using GSS2.UI.Core.ViewModels; namespace GSS2.Test.ViewModels; public partial class MainViewModel : ViewModelBase { private readonly ILogger _logger; private readonly CameraService _cameraService; [ObservableProperty] private CameraViewModel _cameraViewModel; [ObservableProperty] private ResourcesViewModel _resourcesViewModel; [ObservableProperty] private OpenCvSharp.Mat? _image; [ObservableProperty] private IRelayCommand _buttonClick; public MainViewModel(ILogger logger, CameraViewModel cameraViewModel, ResourcesViewModel resourcesViewModel, CameraService cameraService) { _logger = logger; _cameraService = cameraService; CameraViewModel = cameraViewModel; ResourcesViewModel = resourcesViewModel; ButtonClick = new RelayCommand(() => { Task.Run(() => cameraService.CaptureImage(CancellationToken.None, 10).ContinueWith(image => Image = image.Result)); }); _logger.LogInformation("{} initialized", nameof(MainViewModel)); } }