如何在运行时添加的上下文菜单项中获取文本?

时间:2011-04-07 06:58:40

标签: wpf contextmenu

我已经以wpf格式创建了一个上下文菜单。并且在运行时添加了菜单项。 以下是添加上下文菜单的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”方法。我想得到点击的菜单项的相应索引。但是当我在上面的方法中添加项目时,我无法给出名称或索引。有什么方法可以做到这一点。 ?

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

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

            }            
    }

在这里,我没有得到任何出局。我认为即使处理也可能有些不妥。

以下是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>

1 个答案:

答案 0 :(得分:0)

你有没有试过检查e.Source或e.OriginalSource?您可能需要调试以查看类型,但对于上面的RoutedEvents,它们应该包含您之后的源