DynamicRibbonBar评估装置,足以满足您的需求表

问题描述

La RibbonBar香格里拉大酒杯!

主窗口#区域功能区工具栏上的TabControl_SelectionChange qsq传递过去的新奇的标签。 ligne DynamicRibbonBarManager.ClearTabs(); s'exuctefréquemment..瞧

原因可能是DynamicRibbonBarManager.ClearTabs()引起的问题 梅斯评论解决方案svp!

MainWindow.xaml.cs

private void TabControl_SelectionChanged(object sender,SelectionChangedEventArgs e)
        {
            DynamicRibbonBarManager.ClearTabs();
            foreach (var itemAdd in e.AddedItems)
            {
                if (itemAdd != null
                    && itemAdd is TabItem
                    && (itemAdd as TabItem).Content is UserControl
                    && ((itemAdd as TabItem).Content as UserControl).DataContext is IWorkSpaceRibbonBar)
                {
                    DynamicRibbonBarManager.UpdaterabbonView((IWorkSpaceRibbonBar)((itemAdd as TabItem).Content as UserControl).DataContext);
                }
            }

        }

DynamicRibbonBarManager.cs

 public static void ClearTabs()
        {
            if (DictButtonActions != null)
            {
                foreach (var keyvaleur in DictButtonActions)
                {
                    if (keyvaleur.Key is RadRibbonButton)
                    {
                        (keyvaleur.Key as RadRibbonButton).Click -= RadRibbonButton_Click;
                    }
                    if (keyvaleur.Key is RadMenuItem)
                    {
                        (keyvaleur.Key as RadMenuItem).Click -= RadRibbonButton_Click;
                    }
                }
                DictButtonActions.Clear();
            }

            foreach (var tab in RibbonTabs)
            {
                RibbonBar.Items.Remove(tab);
            }
            RibbonTabs.Clear();
            if (RibbonBar != null && RibbonBar.Items != null)
            {
                (RibbonBar.Items[0] as RadRibbonTab).IsSelected = true;
            }
        }

DynamicRibbonBarManager.cs

 private static List<RadRibbonTab> GeTradRibbonTabs(string contextualGroupName,IEnumerable<AbstractItemRibbonBar> abstractItemRibbonBars)
        {
            var dicRadRibbonTabs = new Dictionary<string,RadRibbonTab>();
            foreach (var item in abstractItemRibbonBars)
            {
                if (item != null && !dicRadRibbonTabs.Keys.Contains(item.TabName))
                {
                    RadRibbonTab radRibbonTab = new RadRibbonTab();
                    radRibbonTab.Header = item.TabName;
                    radRibbonTab.ContextualGroupName = contextualGroupName;
                    foreach (var group in GetRibbonGroup(item.TabName,abstractItemRibbonBars))
                    {
                        radRibbonTab.Items.Add(group);
                    }

                    dicRadRibbonTabs.Add(item.TabName,radRibbonTab);
                }

            }

            List<RadRibbonTab> RadRibbonTabs = dicRadRibbonTabs.Values.ToList();

            if (RadRibbonTabs.Any())
            {
                RadRibbonTabs.First().IsSelected = true;
            }

            RibbonTabs.AddRange(RadRibbonTabs);
            return dicRadRibbonTabs.Values.ToList();

        }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)