我想做的事情相当简单,但我还没有在网上看到关于如何做到这一点的例子。我希望在字段更改时启用"更新"按钮。
上下文:我有一个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;
}
我希望你有个主意。