2011-04-07 47 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

相关问题