我应该在Prism的DelegateCommand中调用RaiseCanExecuteChanged吗?

时间:2011-06-08 10:47:01

标签: prism prism-4

我为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()?

1 个答案:

答案 0 :(得分:1)

命令或命令管理器应该如何知道它的执行状态发生了变化?要让他们知道你需要通过RaiseCanExecuteChanged方法发出信号。