Ich Erzeugung dynamisch Schaltflächen auf den Inhalt einer Datei abhängig.RelayCommand mit Lambda führt nur einmal
Mein Code wird nur ausgeführt, die RelayCommand einmal, wenn ich es auf diese Weise schreiben:
var button = new Button();
button.Command = new RelayCommand(() => Messenger.Default.Send(new UseThisValue(value));
// button gets added to a treeview
aber wenn ich es so ändern, dass das Lambda auf den Tag propery gesetzt ist es jedes Mal
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
arbeitet
Was geht hier vor? Wird der Zuordnungswert beibehalten, um einen Referenzzähler am Leben zu erhalten? Ich bin ziemlich neu in C#, also könnte ich etwas übersehen, das für den erfahreneren Entwickler offensichtlich ist.
Nur damit Sie wissen, in mvvm sollte der Befehl nie etwas über die Benutzeroberfläche kennen. Befehle sollten im Ansichtsmodell definiert werden, das die Ansicht nicht kennen oder interessieren soll. Dann verwenden Sie in der Ansicht Bindung, um den Befehl für die Schaltfläche festzulegen. –