AutoCommit = "False"のDataFormと、コマンドSaveCommandにバインドされた外部の[保存]ボタンがあります。
データへの変更が保留されていないときに(ViewModelを使用している)保存コマンドを無効にしたい場合、いつSaveCommand.RaiseECanExecuteChanges()を実行する必要がありますか?
AutoCommit = "False"のDataFormと、コマンドSaveCommandにバインドされた外部の[保存]ボタンがあります。
データへの変更が保留されていないときに(ViewModelを使用している)保存コマンドを無効にしたい場合、いつ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();
}
}
それが役立つことを願っています。