使用DataForm和外部“保存”按钮

时间:2012-05-25 00:29:11

标签: mvvm silverlight-4.0 silverlight-5.0 delegatecommand

我有一个AutoFmit =“False”的DataForm和一个绑定到Command SaveCommand的外部Save按钮。

如果我想在没有数据更改(我正在使用ViewModel)处于挂起状态时禁用“保存”命令,那么何时必须执行SaveCommand.RaiseECanExecuteChanges()?

1 个答案:

答案 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();
    }
}

希望有所帮助。