CanExecute WPF命令用于字段更改

时间:2013-07-27 00:43:19

标签: wpf mvvm icommand canexecute

我想要做的事情相当简单,但我没有在网上看到关于如何做的例子。如果字段已更改,我想要启用“更新”按钮。

上下文:我有一个更新数据库中一行的WPF表单。我不希望用户能够单击“更新”按钮,除非他/她修改了某些表单值。我正在使用MVVM模式,并有4个属性可以更新(名称,地址,电话和电子邮件)。除非用户更改其中一个属性,否则我不希望启用“更新”按钮。

谢谢!

命令代码(我不确定在CanExecute中放入什么样的验证)

    public ICommand UpdateCommand
    {
        get;
        internal set;
    }

    private void CreateUpdateCommand()
    {
        UpdateCommand = new RelayCommand(UpdateExecute, CanExecuteUpdateCommand);
    }

    private void UpdateExecute(object obj)
    {
        ClientModel.UpdateClient(_selectedClient);
    }

    private bool CanExecuteUpdateCommand(object obj)
    {
        return true;
    }

1 个答案:

答案 0 :(得分:0)

嗨,你可以拥有像 hasChanges 这样的bool标志,这个标志最初是假的。在你的可修改属性的 setter 中,你设置为true,更新后再次设置为false 。并在CanExecute中返回此hasChanges而不是true。假设您有属性名称

private bool hasChanges=false;
    private string name;

    public string Name
    {
        get
        {
            return name;
        }
        set
        {
            name = value;
            hasChanges = true;
            Notify("Name");
        }
    }

    private bool CanExecuteUpdateCommand(object obj)
    {
        return hasChanges;
    }
 private void UpdateExecute(object obj)
{
    ClientModel.UpdateClient(_selectedClient);
    hasChanges=false;
}

我希望你有个主意。