Mvvm 使用数据表单和外部保存按钮

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

我有一个带有AutoCommit=“False”的数据表单和一个绑定到命令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();
    }
}

希望能有所帮助。

我通常会覆盖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();
    }
}
希望有帮助