2 ContextMenus的问题

时间:2012-03-27 20:05:36

标签: c# windows-phone-7

我有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)。

请帮帮我,怎么了?

2 个答案:

答案 0 :(得分:2)

您将MenuItem_Tap1事件处理程序附加到ContextMenu的{​​{1}}事件,而不是每个Tap的{​​{1}}事件。试试这个:

MenuItem

答案 1 :(得分:1)

您正在将Click事件附加到ContextMenu,并且从代码和评论中,您显然希望将其附加到MenuItem