【发布时间】:2022-01-26 11:06:36
【问题描述】:
我想异步运行按钮命令。以下应用程序可以异步运行。但我找不到如何将我在 xaml 端指定的 CommandParamater 传递到事件中。
我应该做什么样的申请?如果您能提供帮助,我会很高兴。
AsyncCommand.cs & IAsyncCommand
public interface IAsyncCommand : ICommand
{
Task ExecuteAsync(object parameter);
}
public class AsyncCommand : AsyncCommandBase
{
private readonly Func<Task> _command;
public AsyncCommand(Func<Task> command)
{
_command = command;
}
public override bool CanExecute(object parameter)
{
return true;
}
public override Task ExecuteAsync(object parameter)
{
return _command();
}
}
AsyncCommandBase.cs
public abstract class AsyncCommandBase : IAsyncCommand
{
public abstract bool CanExecute(object parameter);
public abstract Task ExecuteAsync(object parameter);
public async void Execute(object parameter)
{
await ExecuteAsync(parameter);
}
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
protected void RaiseCanExecuteChanged()
{
CommandManager.InvalidateRequerySuggested();
}
}
视图模型
ChangePageCommand = new AsyncCommand(async () => await ChangePageClick());
【问题讨论】:
标签: c# wpf mvvm async-await command