首页 > 解决方案 > Outlook VSTO 插件:根据 AppointmentItem.Body 中输入的文本更新 RibbonBar

问题描述

我正在尝试根据用户在 AppointmentItem.Body 中输入的文本更新我的自定义功能区。我有 2 个无法解决的问题: 1.) 当用户在 AppointmentItem 的正文中输入文本时,我找不到可靠触发的事件。我担心没有任何我可以订阅的事件。正确的?AppPropertyChange 不起作用。

2.) 我知道功能区有指向 ThisAddIn 实例的链接。但是在正确的体系结构中不应该有从 ThisAddIn 到功能区的引用。因此,即使我设法在 ThisAddIn 中找到要处理的正确事件,我也无法在 Ribbon 上调用 InvalidateUI,因为我没有指向 Ribbon 实例的链接。正确的?

标签: vstooutlook-addin

解决方案


对你的问题1)

我认为没有事件监听 keydown 或其他的AppointmentItem.Body. 你不能更好地扭转逻辑吗?因此,在单击功能区按钮后,您可以检查约会中的内容?

对于你的问题2)

解决方案是让功能区约Globals. 确保您可以访问功能区并在 stackoverflow 上观看此问题

public partial class ThisAddIn {

  Explorer activeExplorer;

  private void ThisAddIn_Startup(object sender, EventArgs e) {
    this.activeExplorer = this.Application.ActiveExplorer();
    this.activeExplorer.ViewSwitch += new ExplorerEvents_10_ViewSwitchEventHandler(this.ViewSwitch);
  }

  private void ViewSwitch() {
    bool isActive = false;

    try {
      Globals.Ribbons.CalendarRibbon.GroupCalendar.Visible = isActive;
      Globals.Ribbons.CalendarRibbon.ButtonCalendarSync.Visible = isActive;
    } catch (System.Exception ex) {
      // ... catch the exception
    }
  }

}

推荐阅读