2
我已經爲DelegateCommand寫了一個CanExecute方法。 CanExecute不會被重新評估爲從CommandBase繼承的其他命令,看起來像這樣。我應該在Prism的DelegateCommand中調用RaiseCanExecuteChanged嗎?
public abstract class CommandBase : ICommand
{
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
public void RaiseCanExecuteChanged()
{
CommandManager.InvalidateRequerySuggested();
}
public virtual bool CanExecute(object parameter)
{
return true;
}
public abstract void Execute(object parameter);
}
我可以作出這樣的棱鏡DelegateCommand工作,所以CanExecute會自動重新評估適當的時候還是應該手工調用RaiseCanExecuteChanged()的時候需要?
是的命令管理員應該怎麼知道?我不知道,但使用命令庫我不必調用RaiseCanExecuteChanged – Karsten 2011-06-09 08:38:49
因爲您使用的是Prism DelegateCommand。 DelegateCommand類派生自DelegateCommandBase而不是來自CommandBase。我猜想CommandManager本身不會在任何其他類上調用CanExecute,而是在CommandBase上。 – PVitt 2011-06-09 08:47:37