/// <summary> /// 闯将菜单分组 /// </summary> /// <param name="navControl"></param> /// <param name="navFrame"></param> /// <param name="menuGroups"></param> void CreateMenuGroup(DevExpress.XtraNavBar.NavBarControl navControl, DevExpress.XtraBars.Navigation.NavigationFrame navFrame, List <MenuGroup> menuGroups) { DevExpress.XtraGrid.Views.Tile.TileView aaa = new DevExpress.XtraGrid.Views.Tile.TileView(); foreach (var item in menuGroups) { //Mybug 需要先检查是否已存在同名组,无则生成 var navBarGroupTemp = new DevExpress.XtraNavBar.NavBarGroup(); navBarGroupTemp.Caption = item.Name; navBarGroupTemp.Expanded = true; navControl.Groups.Add(navBarGroupTemp); CreateMenu(navFrame, navBarGroupTemp, item.MenuItems); } }
/// <summary> /// 创建菜单 /// </summary> /// <param name="navFrame"></param> /// <param name="barGroup"></param> /// <param name="menuItems"></param> void CreateMenu(DevExpress.XtraBars.Navigation.NavigationFrame navFrame, DevExpress.XtraNavBar.NavBarGroup barGroup, List <MenuItem> menuItems) { Stopwatch sw = new Stopwatch(); foreach (var item in menuItems) { DevExpress.XtraBars.Navigation.NavigationPage navPageTemp = new DevExpress.XtraBars.Navigation.NavigationPage(); navPageTemp.Name = ""; navPageTemp.Caption = item.Name; navFrame.Controls.Add(navPageTemp); navFrame.Pages.Add(navPageTemp); DevExpress.XtraNavBar.NavBarItem navbarTemp = new DevExpress.XtraNavBar.NavBarItem() { Caption = item.Name }; navbarTemp.LinkClicked += (s, e) => { sw.Restart(); //初次点击实例化 if (item.ControlType != null) { if (item.View == null) { UserControl intance = (UserControl)item.ControlType.Assembly.CreateInstance(item.ControlType.FullName); item.View = intance; navPageTemp.Controls.Add(item.View); item.View.Dock = DockStyle.Fill; item.View.Location = new System.Drawing.Point(0, 0); System.Diagnostics.Debug.WriteLine($"临时生成了view:{item.Name}"); } } navFrame.SelectedPage = (DevExpress.XtraBars.Navigation.INavigationPage)navFrame.Pages.SingleOrDefault(x => x.Caption == item.Name); sw.Stop(); System.Diagnostics.Debug.WriteLine($"创建或打开view:{item.Name}耗时:{sw.Elapsed}"); }; barGroup.ItemLinks.Add(navbarTemp); } }