Je suis nouveau dans WPF et surtout dans les Commandes, et j'ai actuellement pour tâche de construire une RelayCommand pour un bouton. Je suis supposé apprendre que j'ai besoin de séparer la logique de l'interface utilisateur. J'ai juste 2 textbox et un textBlock, l'utilisateur écrit les noms dans les cases et clique sur un bouton pour les afficher dans le bloc de texte. Ma tâche est de lire à propos de RelayCommand et de l'implémenter, mais je ne comprends vraiment pas comment cela fonctionne. J'ai une méthode UpdateName dans ma classe Logic.cs, comment l'utiliser dans un RelayCommand? Tout ce que j'ai est le RelayCommand.cs avec l'interface ICommand implémentée. C'est le code que j'ai trouvé en ligne, mais je ne sais vraiment pas quoi mettre où.RelayCommand pour la mise à jour d'un TextBox
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
private Action methodToExecute;
private Func<bool> canExecuteEvaluator;
public RelayCommand(Action methodToExecute, Func<bool> canExecuteEvaluator)
{
this.methodToExecute = methodToExecute;
this.canExecuteEvaluator = canExecuteEvaluator;
}
public RelayCommand(Action methodToExecute)
: this(methodToExecute, null)
{
}
public bool CanExecute(object parameter)
{
if (this.canExecuteEvaluator == null)
{
return true;
}
else
{
bool result = this.canExecuteEvaluator.Invoke();
return result;
}
}
public void Execute(object parameter)
{
this.methodToExecute.Invoke();
}
Oui, DataContext est défini sur la classe Logic. J'ai ajouté la propriété, mais où exactement initialiser la commande? Où est la construction de viewmodel, dans le Logic.cs? Désolé, je suis vraiment nouveau à ce sujet. La partie contraignante je comprends. – tweedledum11
Mise à jour de la réponse. –
Ok, je l'ai, j'ai initialisé la commande dans le constructeur Logic, par UpdateText() vous voulez dire ma méthode personnalisée UpdateName? Mon Visual Studio m'a fait changer à ceci: UpdateTextCommand = new RelayCommand (délégué (object obj) {UpdateName();}, null); Pourquoi donc? Celui d'avant n'a pas fonctionné. – tweedledum11