我将项目添加到运行时由新电子邮件检查器使用的RibbonDropDown.我在启动时添加项目,并根据需要刷新列表(当用户按下按钮时)
public void RefreshListNames() { Logger.Log("Refresh Mail Lists"); Globals.Ribbons.Ribbon1.rddListNames.Items.Clear(); foreach (keyvaluePair<Guid,string> kvp in _dda.GetMarketingListNames()) { Microsoft.Office.Tools.Ribbon.RibbonDropDownItem dd = Globals.Factory.GetRibbonFactory().CreateRibbonDropDownItem(); dd.Tag = kvp.Key; dd.Label = kvp.Value; Logger.Log("Adding " + dd.Label); Globals.Ribbons.Ribbon1.rddListNames.Items.Add(dd); } Globals.Ribbons.Ribbon1.rddListNames.ResumeLayout(); }
注意:rddListNames是RibbonDropDown
此方法在ThisAddIn_Startup方法中调用,并在启动时进行核心填充.但是,任何新的邮件窗口都会以空白下拉列表结束 – 没有项目.即使刷新列表也不会再次添加项目.
我添加了一些日志记录:它显示按下’刷新按钮’时该方法正在运行:
23/04/2013 14:36:43 - Refresh Mail Lists 23/04/2013 14:36:45 - Adding Marketing List - Dynamic 23/04/2013 14:36:45 - Adding Marketing List - Bs 23/04/2013 14:36:45 - Adding Marketing List - As
为什么下拉不断丢失物品?为什么他们不回来,即使我明确刷新它们?
解决方法
如果对功能区UI进行控制修改,则需要通过
IRibbonControl.Invalidate()
或
IRibbonControl.InvalidateControl
使控制缓存无效.这将触发Ribbon元素的重绘.
Globals.Ribbons.Ribbon1.Invalidate(); // or... Globals.Ribbons.Ribbon1.InvalidateControl("ddMarketingList");
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。