我有一个带有 AutoCommit = "False" 的 DataForm 和一个绑定到命令 SaveCommand 的外部保存按钮。
如果我希望在未对数据(我正在使用 ViewModel)进行任何更改时禁用 Save 命令,我何时必须执行 SaveCommand.RaiseECanExecuteChanges()?
我有一个带有 AutoCommit = "False" 的 DataForm 和一个绑定到命令 SaveCommand 的外部保存按钮。
如果我希望在未对数据(我正在使用 ViewModel)进行任何更改时禁用 Save 命令,我何时必须执行 SaveCommand.RaiseECanExecuteChanges()?
我通常会覆盖 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();
}
}
希望有帮助。