using System.Windows.Input; namespace YwxApp.AiChat.Utilities { public class AsyncRelayCommand : ICommand { private readonly Func _execute; private readonly Func _canExecute; public AsyncRelayCommand(Func execute, Func canExecute = null) { _execute = execute; _canExecute = canExecute; } public event EventHandler CanExecuteChanged { add => CommandManager.RequerySuggested += value; remove => CommandManager.RequerySuggested -= value; } public bool CanExecute(object parameter) => _canExecute?.Invoke() ?? true; public async void Execute(object parameter) => await _execute(); } }