Outlook加载项:RibbonToggleButton图像更改仅在Outlook窗口变为活动状态时刷新

时间:2018-08-08 07:03:37

标签: c# outlook outlook-addin synchronizationcontext

是否可以在Outlook加载项中强制UI刷新或重绘控件?我基本上是在功能区中更新按钮的图像。该映像是通过WebApi调用在服务器中生成的,该调用包含新记录的计数和新映像。除非Outlook窗口不是活动/聚焦窗口,否则这似乎工作正常。

当我的加载项从服务器接收到SignalR通知时,将执行以下代码段。该代码段调用一个webapi来获取包含该按钮的新图像的新信息。

我不确定自己在做什么错,但是当连接了多个屏幕/显示器并且扩展屏幕(未聚焦)中显示了Outlook时,尽管代码中没有用新图像更新按钮已经执行了。这些更改仅在我单击/关注Outlook时反映出来。

let tabbarVC = self.storyboard?.instantiateViewController(withIdentifier: "TabbarVC") as! UITabBarController
self.present(tabbarVC, animated: true, completion: nil)

2 个答案:

答案 0 :(得分:1)

您需要致电IRibbonUI.Invalidate。当您处理插件功能区的IRibbonUI回调时,onLoad接口将传递给您的插件。

答案 1 :(得分:0)

我获得成功的唯一方法是结合使用以下两种组合:使用IRibbonUI.Invalidate使功能区无效,然后切换到Outlook窗口,再返回到之前关注的焦点。

这对于一次更新应该没问题,但是如果经常执行,显然会干扰应用程序。