private void InitializeRibbonGroups(IEnumerable <RibbonEntry> ribbonEnties, Ribbon ribbonContainer) { foreach (RibbonEntry item in ribbonEnties) { string targetTabHeaderKey = item.RibbonTabName; if (String.IsNullOrEmpty(targetTabHeaderKey)) { targetTabHeaderKey = "HomeRibbonTabHeader"; } RibbonTab ribbonTab = null; foreach (RibbonTab tab in ribbonContainer.Items) { string currentTabHeaderKey = RibbonExtension.GetRibbonTabHeader(tab); if (!String.IsNullOrEmpty(currentTabHeaderKey) && currentTabHeaderKey.Equals(targetTabHeaderKey, StringComparison.OrdinalIgnoreCase)) { ribbonTab = tab; break; } } if (ribbonTab == null) { ribbonTab = new RibbonTab(); string targetTabHeader = GisEditor.LanguageManager.GetStringResource(targetTabHeaderKey); if (string.IsNullOrEmpty(targetTabHeader)) { ribbonTab.Header = targetTabHeaderKey; } else { ribbonTab.SetResourceReference(RibbonTab.HeaderProperty, targetTabHeaderKey); } ribbonContainer.Items.Add(ribbonTab); } RibbonExtension.SetRibbonTabHeader(ribbonTab, targetTabHeaderKey); RibbonExtension.SetRibbonTabIndex(ribbonTab, item.RibbonTabIndex); if (!ribbonTab.Items.Contains(item.RibbonGroup)) { ribbonTab.Items.Add(item.RibbonGroup); } } }