2011-04-07 77 views
2

我創建一個WPF form.And菜單項的文本菜單,在運行時添加。 下面是XAML代碼片段添加上下文菜單:如何在運行時添加的上下文菜單項中獲取文本?

<Window.ContextMenu>   
<ContextMenu AllowDrop="True" VerticalContentAlignment="Top" Opened="note_Opened" > 
<MenuItem Header="View Notes" Click="MenuItemViewNotes_Click" Name="mainMenu" /> 
    ...............................  
</ContextMenu> 
</Window.ContextMenu> 

菜單項中添加如下:

private void note_Opened(object sender, RoutedEventArgs e) 
    {  
......... //some codes goes here 
      while(reader.Read()){ 

       MenuItem newItem = new MenuItem(); 
       newItem.Header = textEncrypt.DecryptString(reader[2].ToString()); 
       // newItem.Click += new RoutedEventHandler(MenuItemViewNotes_Click); 

       mainMenu.Items.Add(newItem); 

           } 
     } 


    } 

以下爲「MenuItemViewNotes_Click」的方法。我想要得到的coresponding指數在點擊菜單item.But我無法給予名稱或索引時,我將在上面method.Is有沒有辦法做到這一點的項目?

private void MenuItemViewNotes_Click(object sender, RoutedEventArgs e) 
    {   
    mainMenu.Items.Clear(); 
      MenuItem mi = sender as MenuItem; 

      if (mi!= null) 
      { 
       MessageBox.Show(mi.Header.ToString()); 

      }    
    } 

在這裏我沒有得到任何出來put。我認爲這可能是一些在處理中的錯誤。

再下面是XAML代碼中調用了 「note_opend」 和 「MainItemViewNotes_click」 功能

<ContextMenu AllowDrop="True" VerticalContentAlignment="Top" Opened="note_Opened" > 
     <MenuItem Header="View Notes" Name="mainMenu" > 
      <MenuItem Header="note1" Click="MenuItemViewNotes_Click" IsCheckable="True"/> 
     </MenuItem> 

     <MenuItem Header="Settings" Click="MenuItemSettings_Click"/> 
      <MenuItem Header="Close" Click="MenuItemClose_Click"/> 
    </ContextMenu> 

回答

0

具有u試圖檢查e.Source或e.OriginalSource?您可能需要調試,看的類型,但對於像上面RoutedEvents,他們應該包含你

+0

是的,我想這e.Source和e.OriginalSource.But後,他們給了我同樣計數每個菜單源item.I需要獲得不同的計數或索引,以便在運行時添加不同的菜單項。 – kalani 2011-04-08 03:29:21

+0

不確定,然後交配 – 2011-04-08 07:40:26

相關問題