(часть) моя реализация ICommand:
public void RaiseCanExecuteChanged()
{
CommandManager.InvalidateRequerySuggested();
}
public event EventHandler CanExecuteChanged
{
add
{
CommandManager.RequerySuggested -= value;
CommandManager.RequerySuggested += value;
}
remove => CommandManager.RequerySuggested -= value;
}
Это прекрасно работает в пользовательском интерфейсе при вызове RaiseCanExecuteChanged (), но в модульном тесте я хочу узнать, был ли пользовательский интерфейс уведомлен о том, что ондолжен вызвать метод CanExecute.Подписка на событие CanExecuteChanged не работает, поскольку это событие не вызывается, поскольку вместо него используется CommandManager.Кто-нибудь знает, как проверить, был ли запущен CommandManager.InvalidateRequerySuggested?
Я также рассматриваю возможность не использовать CommandManager и изменить мою реализацию на:
public void RaiseCanExecuteChanged()
{
CanExecuteChanged?.Invoke(this, EventArgs.Empty);
}
public event EventHandler CanExecuteChanged;
преимущество заключается в том, что этотолько триггеры, вызывающие CanExecute для конкретной команды, а не для всех команд, зарегистрированных в CommandManager.Может кто-нибудь подтвердить, что мое понимание о CommandManager верно?Кто-нибудь знает недостатки этого подхода с «нормальным» событием CanExecuteChanged?