1

我有一个带有 AutoCommit = "False" 的 DataForm 和一个绑定到命令 SaveCommand 的外部保存按钮。

如果我希望在未对数据(我正在使用 ViewModel)进行任何更改时禁用 Save 命令,我何时必须执行 SaveCommand.RaiseECanExecuteChanges()?

4

1 回答 1

1

我通常会覆盖 RaisePropertyChanged 并将我的 CanExecute 谓词设置为 ViewModel 是否脏。

class ViewModel : ViewModelBase
{
    public DelegateCommand SaveCommand { get; set; }
    private bool _isDirty;

    public ViewModel()
    {
        SaveCommand = new DelegateCommand(() => OnExecuteSave(), () => CanExecuteSave());
    }

    private void CanExecuteSave()
    {
        // do your saving
    }

    private bool CanExecuteSave()
    {
        return !_isDirty;
    }

    protected override void RaisePropertyChanged(string propertyName)
    {
        base.RaisePropertyChanged(propertyName);
        _isDirty == true;
        SaveCommand.RaiseCanExecuteChanged();
    }
}

希望有帮助。

于 2012-05-25T09:10:39.367 回答