我认为这是我在这里发表的总体缺乏经验,但我无法弄清楚为什么会发生这种情况。
我的模型ImportMany
是一个名为ISystemSetupEditor的接口,在这种情况下,我有几个Export
接口的部分。
在应用程序的ViewModel中,我有一个创建菜单的方法,并迭代IEnumerable<ISystemSetupEditor>
以填充菜单项,如下所示:
private ObservableCollection<WPFMenuItem> CreateSystemSetupItems()
{
ObservableCollection<WPFMenuItem> menu = new ObservableCollection<WPFMenuItem>();
foreach(ISystemSetupEditor editor in _model.SystemSetupEditors) {
WPFMenuItem menuitem = new WPFMenuItem( editor.GetName());
menuitem.Command = new RelayCommand( () => editor.ShowTool());
menu.Add( menuitem);
}
return menu;
}
问题是,当我点击任何菜单项时,始终会调用最后枚举的ISystemSetupEditor派生对象的ShowTool()。就像每个RelayCommand存储相同的引用一样。
我希望有人可以: