问题描述
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 (将#修改为@)