Mvvm 使用数据表单和外部保存按钮
我有一个带有AutoCommit=“False”的数据表单和一个绑定到命令SaveCommand的外部保存按钮Mvvm 使用数据表单和外部保存按钮,mvvm,silverlight-4.0,silverlight-5.0,delegatecommand,Mvvm,Silverlight 4.0,Silverlight 5.0,Delegatecommand,我有一个带有AutoCommit=“False”的数据表单和一个绑定到命令SaveCommand的外部保存按钮 如果我想在没有数据更改(我使用的是ViewModel)挂起时禁用Save命令,那么我何时必须执行SaveCommand.RaiseECanExecuteChanges()?我通常会覆盖RaisePropertyChanged,并将CanExecute谓词设置为ViewModel是否脏 class ViewModel : ViewModelBase { public Delega
如果我想在没有数据更改(我使用的是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();
}
}
希望能有所帮助。我通常会覆盖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();
}
}
希望有帮助