private void Navigate(Panels type) // Метод, который выполняет процедуру навигации между панелями { // Если есть неоткреплённая панель, её необходимо откремить от панели-контейнера if (active != null && ContentPanel.Controls.Contains(active.GetMainPanel())) { active.Dettach(); } // Приклепление новой панели к контейнеру active = panels[type]; active.Attach(); }
public static void AddViewToContentPanel <T>(IRibbonButtonInfo viewInfo, IContentPanel panel, Func <T, bool> predicate) { if (panel.IsLoaded()) { bool shouldCreate = true; var enumerator = panel.GetEnumerator(); try { while (enumerator.MoveNext()) { if (predicate((T)enumerator.Current)) { shouldCreate = false; break; } } } finally { enumerator = null; } if (shouldCreate) { try { var view = panel.GetView(viewInfo); if (view != null) { if (view is IView seed) { seed.ID = viewInfo.ID; } panel.Add(panel.NewItem(viewInfo, view)); } } catch (Exception ex) { mLogger.Warn($"Error while invoking addin:{viewInfo.Name}, type:{viewInfo.Type}, assembly:{viewInfo.Assembly}, due to:{ex}"); } } } }