我正在使用 C#,我有一个对象列表,我想在上下文菜单中显示所有对象,每个对象都显示为 MenuItem
。
单击一个 MenuItem 时,我想引用 MenuItem_Click()
函数中的关联对象。
List<MyObject> MyList = new List<MyObject>();
ContextMenu menu = new ContextMenu();
foreach(MyObject o in MyList)
{
MenuItem item = new MenuItem();
item.Header = o.Name;
item.Click += MenuItem_Click;
menu.Items.add(item);
}
menu.IsOpen=true;
void MenuItem_Click(object sender, RoutedEventArgs e){
// Assume the 5th MenuItem is clicked, I need to refer to the 5th object in MyList
// how to do it?
}
最佳答案
适合您当前拥有的代码的快速脏 hack:使用 Tag
属性。
foreach(MyObject o in MyList)
{
MenuItem item = new MenuItem();
item.Header = o.Name;
item.Tag = o;
item.Click += MenuItem_Click;
menu.Items.add(item);
}
那么你可以这样引用它:
private void MenuItem_Click(object sender, RoutedEventArgs e)
{
var myObj = (MyObject)((MenuItem)sender).Tag;
}
关于c# - 将 MenuItem 与列表中的项目动态关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8325530/