2012-03-27 20 views
0

Ich habe 2 ContextMenus, und der zweite davon wird von Anfang an aufgerufen.Probleme mit 2 ContextMenus

Handler für die erste (Erstellen Sekunde):

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; 
      //} 
     } 
    } 

Handler für die zweite:

 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)); 
    } 

Aber es gibt in System.InvalidCastException zweiten Handler (MenuItem MI1 = (MenuItem) sender).

Bitte, hilf mir, was ist los?

+0

Was ist der Typ des Absenders? (Fahre darüber und sieh dir den Typ an) –

+0

ContextMenu. Und im ersten Fall in Ordnung –

Antwort

2

Sie Anbringen der MenuItem_Tap1 Event-Handler die ContextMenu 's Tap Ereignis statt jedes MenuItem' s Tap Ereignis. Versuchen Sie dies:

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

Sie fügen Ihr Click Ereignis an die ContextMenu an und aus dem Code und Ihrem Kommentar ist ersichtlich, dass Sie es an die MenuItem anhängen möchten.