как получить текст в пункте контекстного меню, который добавляется во время выполнения? - PullRequest
2 голосов
/ 07 апреля 2011

Я создал контекстное меню в форме 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". Я хочу получитьcoresponding индекс выбранного элемента меню. Но я не смог дать имя или индекс при добавлении элемента вышеописанным способом. Есть ли способ сделать это?

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 голосов
/ 07 апреля 2011

вы пытались проверить e.Source или e.OriginalSource?вам может потребоваться отладка, чтобы увидеть тип, но для RoutedEvents, как указано выше, они должны содержать источник, который вы указали после

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...