Мне нужно программно повысить CanExecuteChanged()
.Класс ICommand
выглядит следующим образом:
public class PlayCommand : ICommand
{
private readonly TpViewModel _tpViewModel;
private bool IsBusy;
public PlayCommand(TpViewModel tpViewModel)
{
_tpViewModel = tpViewModel;
}
public bool CanExecute(object parameter)
{
return !IsBusy;
}
public async void Execute(object parameter)
{
if (IsBusy)
return;
await Play();
}
public event EventHandler CanExecuteChanged
{
add => CommandManager.RequerySuggested += value;
remove => CommandManager.RequerySuggested -= value;
}
private async Task Play()
{
IsBusy = true;
Console.WriteLine("Play")
IsBusy = false;
}
}
Кнопка Play
должна быть активирована, как только метод Play()
будет завершен.Тем не менее, кажется, что задержка секунды или две, прежде чем кнопка будет включена.
Я пробовал CommandManager.InvalidateRequerySuggested()
, но это не работает.