2013-07-27 2 views
2

Ce que je veux faire est assez simple mais je n'ai pas vu d'exemples en ligne avec respect sur la façon de le faire. Je veux qu'un bouton 'Mise à jour' soit activé si un champ a été changé.CanExecute WPF commande sur le changement de champ

Contexte: J'ai un formulaire WPF qui met à jour une ligne dans une base de données. Je ne veux pas que l'utilisateur puisse cliquer sur le bouton 'Mise à jour' à moins qu'il/elle ait modifié une valeur de formulaire. J'utilise le modèle MVVM et j'ai 4 propriétés qui peuvent être mises à jour (Nom, Adresse, Téléphone et Email). À moins que l'utilisateur ne modifie l'une de ces propriétés, je ne souhaite pas que le bouton de mise à jour soit activé.

Merci!

Code de commande (je ne suis pas sûr à quel type de validation à mettre dans le 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; 
    } 

Répondre

0

Salut, vous pouvez avoir un drapeau bool comme hasChanges ce qui est faux initially.and dans le poseur de vos propriétés modifiables vous l'avez défini comme vrai et après la mise à jour définissez false à nouveau. Dans CanExecute, renvoyez ce hasChanges au lieu de true. Supposons que vous avez la propriété Nom

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; 
} 

J'espère que vous avez une idée.

Questions connexes