2012-03-27 1 views
0

У меня есть 2 ContextMenus, а второй из них вызывается из первого.Проблемы с 2 ContextMenus

Handler для первого (создание второго):

private void MenuItem_Tap(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     MenuItem mI = (MenuItem)sender; 

     if (mI.Header.ToString() == "England") 
     { 
      cM.Items.Clear(); 
      cM.Items.Add(new MenuItem() { Header = "Barclays PL" }); 
      cM.Items.Add(new MenuItem() { Header = "Championship" }); 
      cM.Items.Add(new MenuItem() { Header = "League 1" }); 
      cM.Items.Add(new MenuItem() { Header = "League 2" }); 
      cM.Items.Add(new MenuItem() { Header = "Conference" }); 
      cM.Tap += MenuItem_Tap1; 
      //if (cM.Parent == null) 
      //{ 
       cM.IsOpen = true; 
      //} 
     } 
    } 

Обработчик второй:

 private void MenuItem_Tap1(object sender, System.Windows.Input.GestureEventArgs e) 
    { 
     MenuItem mI1 = (MenuItem)sender; 
     if (mI.Header.ToString() == "Barclays PL") 
      this.NavigationService.Navigate(new Uri("/pEng.xaml", UriKind.Relative)); 
    } 

Но есть System.InvalidCastException во второй обработчик (MenuItem mi1 = (MenuItem) отправителя).

Пожалуйста, помогите мне, что случилось?

+0

Каков тип отправителя? (Наведите указатель мыши на него и посмотрите на тип) –

+0

ContextMenu. И в первом случае все правильно –

ответ

2

Вы прикрепление обработчика MenuItem_Tap1 события к ContextMenu «s Tap случае вместо каждого MenuItem» s Tap события. Попробуйте следующее:

cM.Items.Clear(); 
cM.Items.Add(new MenuItem() { Header = "Barclays PL" }); 
cM.Items.Add(new MenuItem() { Header = "Championship" }); 
cM.Items.Add(new MenuItem() { Header = "League 1" }); 
cM.Items.Add(new MenuItem() { Header = "League 2" }); 
cM.Items.Add(new MenuItem() { Header = "Conference" }); 

foreach(var item in cM.Items) { 
    ((MenuItem)item).Tap += MenuItem_Tap1; 
} 
1

Вы присоединяете свое событие Click к ContextMenu, а также из кода и ваших комментариев, очевидно, что вы хотите прикрепить его к MenuItem.

Смежные вопросы