我想異步運行按鈕命令。以下應用程式可以異步運行。但是我找不到如何將我在 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();
}
}
異步命令庫
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());
uj5u.com熱心網友回復:
您可以將委托的型別從Func<Task>(不帶引數并回傳的方法Task)更改為Func<object, Task>(帶單個object引數并回傳 的方法Task):
private readonly Func<object, Task> _command;
public AsyncCommand(Func<object, Task> command) => _command = command;
public override Task ExecuteAsync(object parameter) => _command(parameter);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/399813.html
上一篇:如何傳遞物件來處理輸出事件
