Je génère des boutons dynamiquement en fonction du contenu d'un fichier.RelayCommand avec lambda ne s'exécute qu'une seule fois
Mon code exécute seulement le RelayCommand une fois si je l'écris ainsi:
var button = new Button();
button.Command = new RelayCommand(() => Messenger.Default.Send(new UseThisValue(value));
// button gets added to a treeview
mais si je change pour que le lambda est réglé sur la propery Tag, il fonctionne à chaque fois
var button = new Button();
button.Tag = new Action(() => Messenger.Default.Send(new UseThisValue(value));
button.Command = new RelayCommand(button.Tag as Action);
// button gets added to a treeview
Que se passe-t-il ici? L'assignmend garde-t-il un certain nombre de références en vie? Je suis assez nouveau à C# donc je pourrais négliger quelque chose d'évident pour le développeur plus expérimenté.
Juste pour que vous sachiez, dans mvvm la commande ne devrait jamais rien savoir de l'interface utilisateur. Les commandes doivent être définies dans le modèle de vue, qui n'est pas censé connaître ou prendre en compte la vue. Ensuite, dans la vue, vous utilisez la liaison pour définir la commande pour le bouton. –