我想做的事情很简单,但是我没有在网上看到有关如何做的例子。如果字段已更改,我希望启用“更新”按钮。
上下文:我有一个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;
}
最佳答案
嗨,您可以拥有一个boot标志,例如 hasChanges 最初为false。在可修改属性的 setter 中,将其设置为true,更新后再次将其设置为false。在CanExecute中返回hasChanges而不是true。假设您具有属性Name
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;
}
我希望你有个主意。
关于wpf - 可以在字段更改时执行WPF命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17893116/