//internal static void ReLoadMenu(RibbonControl ribbon) //{ // menus = null; // LoadMenu(ribbon); //} internal static void LoadMenu(RibbonControl ribbon) { if (isloadmenu) return; if (FixItems == null) FixItems = ribbon.Items.Cast<BarItem>().ToArray(); if (menus == null) menus = ServiceProxyFactory.Create<IMenuService>().GetAllEntity(); ribbon.Pages.Clear(); for (int i = ribbon.Items.Count - 1; i >= 0; i--) { if (!FixItems.Contains(ribbon.Items[i])) ribbon.Items.Remove(ribbon.Items[i]); } //ribbon.Items.Clear(); List<RibbonPageHolder> ribbonpageholders = new List<RibbonPageHolder>(); var rpageEntitys = menus.Where(t => t.MenuControl.ToLower() == "ribbonpage").ToList(); foreach (var rpageEntity in rpageEntitys) { RibbonPageHolder ribbonpageholder = ConvertMenuEntityToRibbonPage(rpageEntity); if (ribbonpageholder != null) { CreateRibbonPageGroupFromMenuEntity(ribbon, ribbonpageholder, rpageEntity); } ribbonpageholders.Add(ribbonpageholder); } var ribbonpages = ribbonpageholders.OrderBy(t => t.Order).Select(t => t.RibbonPage).ToArray(); ribbon.Invoke(new Action(() => { ribbon.Pages.AddRange(ribbonpages); })); isloadmenu = true; }