我正在开发一个带有自己的功能区选项卡的 Word 加载项。我的大部分实际代码都包含在一些服务类中,这些类在 ThisAddIn_Startup 中初始化并分配给 ThisAddIn 单例对象的属性。我还有一个事件侦听器,用于侦听剪贴板事件,我想将这些事件作为同一对象的属性公开给其余代码。
我遇到的问题是我的 Ribbon 的 Load 事件在 ThisAddIn 的 Startup 事件之前触发(即使单例对象已经被初始化并分配给 Globals.ThisAddIn)。在我的 Ribbon 的 Load 事件处理程序中,我想在该侦听器上安装一个处理程序并使用其中一项服务。但是,我不能,因为在程序执行的这一点上它们是空的。
这个问题的最佳解决方案是什么?我可以将所有这些东西都设为 ThisAddIn 的静态成员并在静态构造函数中对其进行初始化,但这似乎是错误的,并且还会破坏拥有 Startup 事件(或单例对象)的全部意义。
奇怪的是,当我的 Ribbon 只是将其组件添加到内置的 Add-In 选项卡时,我最初没有遇到这个问题 - 然后在 Startup 之后触发了 Load 事件。
(注意:我在 Visual Studio 2012 中执行所有这些操作并使用功能区设计器。)