我有2个ContextMenus,第二个是从第一个调用的。
第一个处理程序(创建第二个):
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)sender)。
请帮帮我,怎么了?
答案 0 :(得分:2)
您将MenuItem_Tap1
事件处理程序附加到ContextMenu
的{{1}}事件,而不是每个Tap
的{{1}}事件。试试这个:
MenuItem
答案 1 :(得分:1)
您正在将Click
事件附加到ContextMenu
,并且从代码和评论中,您显然希望将其附加到MenuItem
。