Files
YwxApp.AiChat/Utilities/AsyncRelayCommand.cs
2025-03-12 20:02:52 +08:00

27 lines
753 B
C#

using System.Windows.Input;
namespace YwxApp.AiChat.Utilities
{
public class AsyncRelayCommand : ICommand
{
private readonly Func<Task> _execute;
private readonly Func<bool> _canExecute;
public AsyncRelayCommand(Func<Task> execute, Func<bool> 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();
}
}