我为DelegateCommand编写了一个CanExecute方法。 CanExecute不会被重新评估为从CommandBase继承的其他命令,如下所示。
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);
}
我可以让Prism DelegateCommand像这样工作,所以CanExecute会在适当时自动重新评估,还是应该在需要时手动调用RaiseCanExecuteChanged()?
答案 0 :(得分:1)
命令或命令管理器应该如何知道它的执行状态发生了变化?要让他们知道你需要通过RaiseCanExecuteChanged方法发出信号。