我有一個能夠插入(MEF)的應用程序。 插件是導入服務的WPF UserControls。在for循環中分配代理的問題
用戶可以從應用程序的主菜單中選擇想要的插件。
要做到這一點,我用下面的循環:
foreach(IToolPlugin Plugin in ToolPlugins)
{
Plugin.Init();
MenuItem PluginMenuItem = Plugin.MenuItem; //New MenuItem but with Header set.
PluginMenuItem.Click += new RoutedEventHandler(delegate(object o, RoutedEventArgs e) { DoSomething(Plugin.Control);});
PluginsMenu.Items.add(PluginMenuItem);
}
,對單個項目的工作非常細。但只要我有一個以上的插件,所有菜單項都會執行最後一個循環的委託。或者至少使用最後一個循環的Plugin.Control。
我該如何解決這個問題?
感謝您的幫助。
我喜歡看到許多這個問題的變化。 – ChaosPandion 2010-07-13 13:14:00
@Chaos - 在這種情況下,您應該投票結束;) – ChrisF 2010-07-13 13:16:29