如何自定义快速访问工具栏(QAT)在C#Word VSTO加载项中使用功能区XML仍然允许用户随后修改QAT?

时间:2011-03-13 08:12:11

标签: c# ms-word vsto ribbon office-2007

我正在使用Visual Studio 2010创建一个VSTO Word 2007 C#加载项。我想向Word的快速访问工具栏(QAT)添加控件,以便用户了解这些控件公开的功能(它们取代了内置Word功能,即undo / redo。)我使用功能区XML来自定义功能区,因此为了向QAT添加控件,我必须使用<ribbon startFromScratch="true">。不幸的是,这样做会禁用用户通过添加他们希望在那里看到的后退控件来进一步自定义QAT的能力。 (“自定义快速访问工具栏”下拉菜单包含可以添加为灰色的所有命令,“更多命令”按钮也显示为灰色。)执行此操作还会删除用户之前可能具有的任何QAT控件为方便起见。

我用来重现此问题的功能区XML是:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
  <ribbon startFromScratch="true">
  </ribbon>
</customUI>

我想知道的是:

1)有没有办法允许用户在将自己的控件添加到QAT后修改QAT? (理想情况下,我会保留用户以前的QAT自定义。)或者,

2)有没有另一种方法可以让我的控制进入QAT,不会删除用户的自定义并允许用户随后修改QAT?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为我要采取的方法是修改位于(对于WinXP)的用户自定义QAT文件:

C:\ Documents and Settings \ Administrator \ Local Settings \ Application Data \ Microsoft \ Office \ Word.qat

我还没有时间实现,所以我不确定我能够在Word锁定之前修改文件,或者及时加载Word。也许我可以让Word重新加载它。

答案 1 :(得分:0)

如果您使用startFromScratch="true",您将始终遇到此问题。如果你过度使用undo / redo这样的东西,为什么不用你的功能覆盖那些按钮呢? Temporarily Repurpose Commands on the Office Fluent Ribbon