/// <summary>
        /// 初始化图形上的所有系统菜单
        /// </summary>
        /// <param name="contextMenu">弹出菜单或者菜单项</param>
        /// <param name="action">菜单消息处理过程</param>
        /// <param name="language">使用的语言</param>
        /// <param name="colorPanelTemplate">颜色菜单项template</param>
        /// <param name="colorControlTemplate">颜色菜单显示Template</param>
        public static void InitChartPopupMenu <T>(T contextMenu, System.Windows.RoutedEventHandler action, Common.EnumLanguage language, ItemsPanelTemplate colorPanelTemplate, ControlTemplate colorControlTemplate) where T : class
        {
            //选择移动菜单
            MenuItem mainItem = AddOneItem(ChartMenuItems.Select, contextMenu, action, language);

            mainItem = AddOneItem(ChartMenuItems.Pan, contextMenu, action, language);

            //缩放菜单(放大,缩小,重置XY,重置Y)
            mainItem = AddOneItem(ChartMenuItems.Zoom, contextMenu, action, language);
            MenuItem subItem = AddOneItem(ChartMenuItems.zoomIn, mainItem, action, language);

            subItem = AddOneItem(ChartMenuItems.zoomOut, mainItem, action, language);
            subItem = AddOneItem(ChartMenuItems.resetXY, mainItem, action, language);
            subItem = AddOneItem(ChartMenuItems.resetY, mainItem, action, language);

            //显示菜单(颜色,信息,隐藏,网格)
            mainItem = AddOneItem(ChartMenuItems.Display, contextMenu, action, language);
            subItem  = AddOneItem(ChartMenuItems.Colors, mainItem, action, language);
            //颜色列表菜单
            subItem.ItemsPanel = colorPanelTemplate;
            foreach (var color in ChartCommonMethod.strColors)
            {
                AddSubColorMenu(subItem, color, action, colorControlTemplate);
            }
            subItem = AddOneItem(ChartMenuItems.showInformation, mainItem, action, language);
            subItem = AddOneItem(ChartMenuItems.Hide, mainItem, action, language);
            subItem = AddOneItem(ChartMenuItems.showGridLine, mainItem, action, language);

            //标注峰位主菜单(上峰位,下峰位)
            mainItem = AddOneItem(ChartMenuItems.peakPick, contextMenu, action, language);
            subItem  = AddOneItem(ChartMenuItems.upPeakPick, mainItem, action, language);
            subItem  = AddOneItem(ChartMenuItems.downPeakPick, mainItem, action, language);
        }
        /// <summary>
        /// 在父菜单下添加一个菜单项
        /// </summary>
        /// <typeparam name="T">ContextMenu或者MenuItem</typeparam>
        /// <param name="commandItem">菜单项</param>
        /// <param name="parentMenu">父菜单</param>
        /// <param name="action">菜单消息处理过程</param>
        /// <param name="language">使用的语言</param>
        /// <returns></returns>
        public static MenuItem AddOneItem <T>(ChartMenuItems commandItem, T parentMenu, System.Windows.RoutedEventHandler action, Common.EnumLanguage language) where T : class
        {
            MenuItem curmenu = new MenuItem();

            curmenu.Name   = commandItem.ToString();
            curmenu.Header = Common.Extenstion.EnumExtensions.GetEnumDescription(commandItem, language);
            curmenu.Click += action;

            if (parentMenu is ContextMenu)
            {
                (parentMenu as ContextMenu).Items.Add(curmenu);
            }
            else if (parentMenu is MenuItem)
            {
                (parentMenu as MenuItem).Items.Add(curmenu);
            }

            return(curmenu);
        }