我根据文件的内容动态生成按钮。带有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中,命令永远不应该知道任何关于用户界面的信息。应该在视图模型中定义命令,这不应该知道或关心视图。然后在视图中使用绑定来设置按钮的命令。 –