我想从列表中循环创建一些菜单项。我是这样尝试的:
MenuItem mnuItemDepth = new MenuItem();
foreach (ClassDepth depth in ClassDepths.ListOfDepths)
{
MenuItem it = new MenuItem();
it.Header = depth.name;
it.Click += new RoutedEventHandler((s, a) => { ChangeDepth(depth); });
mnuItemDepths.Items.Add(it);
}
ClassDepths.ListOfDepths 的每一项都应该成为一个菜单项。它的工作原理除了一件事:
click 事件触发 ChangeDepth 方法,每个菜单项具有相同的参数(深度)。似乎添加的最后一个菜单项定义了由事件处理程序为从列表中创建的每个菜单项传递给 ChangeDepth 的深度参数。有谁知道为什么?菜单项不同,但每个菜单项使用相同的参数调用 ChangeDepth。
我希望我的解释没有那么糟糕。谢谢!