【发布时间】:2015-02-26 04:25:27
【问题描述】:
我目前正在深入研究 Word 2010 的 VSTO 插件开发和功能区自定义。这很好用,但有一个缺点:功能区自定义应该只针对某些文档进行,但 IRibbonExtensibility.GetCustomUI() 方法显然是在加载任何文档之前在应用程序启动时调用。我怎样才能满足这个要求?
【问题讨论】:
我目前正在深入研究 Word 2010 的 VSTO 插件开发和功能区自定义。这很好用,但有一个缺点:功能区自定义应该只针对某些文档进行,但 IRibbonExtensibility.GetCustomUI() 方法显然是在加载任何文档之前在应用程序启动时调用。我怎样才能满足这个要求?
【问题讨论】:
你是对的,它只被调用一次。关于您唯一的选择(以及对我有用的东西),是预先在功能区中定义所有内容,然后根据加载的文档或插件中发生的任何其他情况将 VISIBLE 属性设置为 false 或 true .
【讨论】:
@drventure 是对的,您必须预先定义功能区,然后在功能区上显示/隐藏不同的按钮。
不过,我一直在从事的项目 VSTO Contrib 中的一些功能可能会对您有所帮助,它允许您创建一个 ViewModel,它将为每个打开的文档创建,它会发现并连接按照惯例,功能区 xml。
在您的情况下,这意味着您可以将功能区按钮的可见性绑定到视图模型上的属性,并且您不必担心保持窗口/文档同步。阅读http://jake.ginnivan.net/vsto-contrib/ribbon-factory,看看它是否能帮助你用更少的代码解决你的问题=)
【讨论】: