我有菜單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