簡體   English   中英

RibbonDropDown丟失物品

[英]RibbonDropDown losing items

我將項目添加到運行時由新電子郵件檢查器使用的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();
}

注意: rddListNamesRibbonDropDown

此方法在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

為什么下拉不斷丟失物品? 為什么他們不回來,即使我明確刷新它們?

如果對Ribbon UI進行控制修改,則需要通過IRibbonControl.Invalidate()IRibbonControl.InvalidateControl使控件緩存無效。 這將觸發Ribbon元素的重繪。

Globals.Ribbons.Ribbon1.Invalidate();
// or...
Globals.Ribbons.Ribbon1.InvalidateControl("ddMarketingList");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM