我有一个AutoFmit =“False”的DataForm和一个绑定到Command SaveCommand的外部Save按钮。
如果我想在没有数据更改(我正在使用ViewModel)处于挂起状态时禁用“保存”命令,那么何时必须执行SaveCommand.RaiseECanExecuteChanges()?
答案 0 :(得分: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();
}
}
希望有所帮助。