我想要做的事情相当简单,但我没有在网上看到关于如何做的例子。如果字段已更改,我想要启用“更新”按钮。
上下文:我有一个更新数据库中一行的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;
}
答案 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;
}
我希望你有个主意。