Can在字段更改时执行WPF命令



我想做的事情相当简单,但我还没有在网上看到关于如何做到这一点的例子。我希望在字段更改时启用"更新"按钮。

上下文:我有一个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;
    }

嗨,你可以有一个布尔标志,比如hasChanges,它最初是false。在可修改属性的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;
}

我希望你有个主意。

最新更新