我认为这是我在这里所说的全部.NET经验不足,但我不明白为什么会发生在我身上。
我的模型
ImportMany
是一个名为isSystemSetupEditor的接口,在本例中,我有几个部分
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;
}
问题是,当我点击
任何
始终调用最后一个枚举的IsSystemSetupEditor派生对象的showtool()菜单项。就好像每个relaycommand都存储着相同的引用。
我希望有人能:
-
解释为什么会发生这种情况,或者至少给我一个关键词,这样我就可以自己查出来。
-
提出可能的解决方案——目前为止我唯一想到的是管理一个单独的字典,其中t,u可以解析到正确的库,以便稍后调用正确的函数。