2

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

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

1 回答 1

0

嗨,您可以有一个 bool 标志,例如hasChanges,它最初为 false。在可修改属性的设置器中,您将其设置为 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;
}

我希望你有一个想法。

于 2013-07-27T00:55:08.160 回答