using System; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using VisionAsist.Models; using VisionAsist.Views; namespace VisionAsist.ViewModels; public partial class MainWindowViewModel : ViewModelBase { [RelayCommand] private void Settingse() { new Settings { DataContext = new SettingsViewModel() }.Show(); } [ObservableProperty] private bool isListening; [ObservableProperty] private string recognizedtext; private Action? _coreHandler; partial void OnIsListeningChanged(bool value) { if (value) { Core.StartListing(); // Сохраняем ссылку на обработчик _coreHandler = word => { Avalonia.Threading.Dispatcher.UIThread.Post(() => { Recognizedtext = Core.TextAsist; }); }; Core.triger.OnRecognized += _coreHandler; } else { Core.StopListing(); // Правильная отписка if (_coreHandler != null) { Core.triger.OnRecognized -= _coreHandler; _coreHandler = null; } } } }