我根據文件的內容動態生成按鈕。帶有lambda的RelayCommand只執行一次
我的代碼只執行RelayCommand一次,如果我把它寫在這樣:
var button = new Button();
button.Command = new RelayCommand(() => Messenger.Default.Send(new UseThisValue(value));
// button gets added to a treeview
,但如果我改變它,以便拉姆達設置爲標籤屬性格式它屢試不爽
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
這是怎麼回事?是否保留一些引用計數存活?我對C#相當陌生,所以我可能會忽略更有經驗的開發人員。
只是爲了讓你知道,在mvvm中,命令永遠不應該知道任何關於用戶界面的信息。應該在視圖模型中定義命令,這不應該知道或關心視圖。然後在視圖中使用綁定來設置按鈕的命令。 –