2012-03-27 6 views
0

私は2つのContextMenusを持っていて、そのうちの2番目が最初から呼び出されます。2 ContextMenusの問題

最初のハンドラ(第2の作成):秒

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)送信側)が第2のハンドラです。

どうかお手伝いします。何が間違っていますか?

+0

送信者の種類は何ですか。 (上にマウスを置いてタイプを見てください) –

+0

ContextMenu。そして、最初のケースではすべての権利 –

答えて

2

あなたはContextMenuさんTapイベントの代わりに、各MenuItemTapイベントにMenuItem_Tap1イベントハンドラを添付しています。試してみてください:

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に添付してください。