[英]VSTO Outlook Addin Ribbons not loading properly
我目前正在修復 Outlook VSTO 插件。 該項目包含 4 個功能區及其各自的功能區類型:
因此,當 Outlook 打開時,調用方法 ThisAddIn_Startup 來初始化插件,我得到的功能區集合如下:
ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
因此,ribbonCollection 包含 4 個功能區,但ribbonCollection 的CrmEmailRibbon 變量的class 類型不匹配。 當我做
ribbonCollection.CrmEmailRibbon
它返回 CrmEmailReadRibbon 而不是 CrmEmailRibbon。 所以 CrmEmailReadRibbon 被返回兩次。 這是從這兩個調用返回的相同功能區:
ribbonCollection.CrmEmailRibbon
ribbonCollection.CrmEmailReadRibbon
第一次調用應返回其關聯的功能區引用:CrmEmailRibbon。 因此,我無法訪問 CrmEmailRibbon 的組和按鈕......有人遇到過這種行為嗎?
通過運行以下代碼:
ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()];
您將獲得檢查器 window 的功能區實例,它可以是以下之一:
CrmAppointmentRibbon.cs -> Type: Microsoft.Outlook.Appointment
CrmEmailNewRibbon.cs -> Type: Microsoft.Outlook.Mail.Compose
CrmEmailReadRibbon.cs -> Type: Microsoft.Outlook.Mail.Read
要獲取功能區實例,您需要傳遞一個活動的資源管理器實例:
ThisRibbonCollection ribbonCollection = Globals.Ribbons[Globals.ThisAddIn.Application.ActiveExplorer()];
對於以下實例:
CrmEmailRibbon.cs -> Type: Microsoft.Outlook.Mail.Explorer
根據上下文,您將獲得適當的功能區實例。
但我建議使用功能區回調而不是使用 VSTO object model 來處理功能區 UI(又名功能區 UI)。 此外,VSTO 並未提供 Fluent UI 的所有功能。 有時您必須使用功能區設計器創建基本 UI,然后將其導出到功能區 XML 文件,您可以在其中開始使用回調。
正如我的同事所說,功能區 UI 從一開始就是 static 的東西。 唯一可能的動態是回調和菜單。 因此,您可以比較兩種方法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.