CanExecute 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;
}
1 ответ
Привет, у вас может быть флаг 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;
}
Я надеюсь, у вас есть идея.