我有菜单ServerList,我使用C#代码动态添加menuItems。它从文件读取服务器列表并填充菜单项。我为每个服务器添加了右键单击选项。编辑&删除。右键单击菜单项并显示选项
这一切工作正常。问题是如何单击Edit/Detele时读取实际的服务器名称。
下面是代码
public MainWindow()
{
InitializeComponent();
LoadMenuItems();
}
//Currently static values, but reads from file. later
private void LoadMenuItems()
{
MenuItem item2 = new MenuItem();
item2.Header = "Server1";
AddContextMenu(item2);
MenuItem item3 = new MenuItem();
item3.Header = "Server2";
AddContextMenu(item3);
ActualMenu.Items.Add(item2);
ActualMenu.Items.Add(item3);
}
private void AddContextMenu(MenuItem item)
{
MenuItem item1 = new MenuItem();
item1.Header = "Edit";
item1.Click += item_Click;
MenuItem item2 = new MenuItem();
item2.Header = "Detlete";
item2.Click += item_Click;
ContextMenu menu = new ContextMenu();
menu.Items.Add(item1);
menu.Items.Add(item2);
item.ContextMenu = menu;
}
void item_Click(object sender, RoutedEventArgs e)
{
MenuItem item = sender as MenuItem;
string header = item.Header.ToString();
}
我想你的item_Click代码是错误的,因为这是我第一次猜测发件人。你是否尝试过item_click处理程序的RoutedEventArgs参数?应该有一个Source属性,这是一个点击菜单项。 – dowhilefor