工厂从哪里来?

Joe*_*ton 5 vsto asp.net-3.5 visual-studio-2010 excel-2010

我正在尝试将项目添加到splitbuttons和gallery.问题在于工厂.在以下OfficeRibbon代码文件中,Factory未知.它在addin代码文件中也是未知的.我错过了某处的参考资料.我也尝试过Globals.Factory还不得而知.

RibbonButton rc = this.Factory.CreateRibbonButton(); 
Run Code Online (Sandbox Code Playgroud)

我有以下使用声明.

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Text.RegularExpressions;
using System.Threading;
using System.Windows.Forms;
using Microsoft.Office.Interop.Excel;
using Microsoft.Office.Tools.Ribbon;
//using Microsoft.Office.Tools.Excel.Extensions;
Run Code Online (Sandbox Code Playgroud)

此代码也在ThisAddin.cs中失败,它已在我的项目中重命名为ReqCommon.cs.

我希望的最终目标是动态地向这两个控件添加项目.我在这里和其他地方找到的例子似乎都以这个难以捉摸的工厂为基础.

该项目确实引用了Microsoft.Office.Tools.Common.v9.0.dll

Sli*_*SFT 5

如果您使用的是功能区设计 -它会自动创建该工厂为你(Globals.Factory.GetRibbonFactory()) -否则,你需要创建自己的工厂覆盖CreateRibbonExtensibilityObject()ThisAddin.cs(你ReqCommon.cs)

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{  
    Ribbon1 tempRibbon = new Ribbon1();
    tempRibbon.tab1.ControlId.ControlIdType = Microsoft.Office.Tools.Ribbon.RibbonControlIdType.Office;
    tempRibbon.tab1.ControlId.OfficeId = "TabHome";
    return Globals.Factory.GetRibbonFactory().CreateRibbonManager(new Microsoft.Office.Tools.Ribbon.IRibbonExtension[] { tempRibbon });   
}
Run Code Online (Sandbox Code Playgroud)

功能区设计继承Ribbon.RibbonBase其包含属性RibbonBase.Factory使this.Factory被内它使用.