我正在将项目添加到新电子邮件检查器在运行时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
为什么下拉菜单总是丢失物品?即使我明确地刷新它们,它们为什么不回来?