VSTO 功能区 xml 在 'template' 中为每个控件类型设置回调属性

VSTO ribbon xml set callback attribute in 'template' for each control type

我有一个使用 XML 作为功能区的 C# VSTO Excel 加载项。其中有多个 ToggleButton,它们都使用在 'getLabel'、'getKeytip'、'getScreentip'、'getSupertip'、'getPressed' 和 [=32 中使用的相同功能=] 回调。然后这些函数 return 正确的值或根据控件的 ID 执行正确的代码。

是否可以为这些设置这些属性的元素创建一个 'template',但允许我提供 ID?

例如,这是我目前拥有的:

          <toggleButton
            id="tb1"
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>
          <toggleButton
            id="tb2"
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>
          <toggleButton
            id="tb3"
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>
          <toggleButton
            id="tb4"
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>
          <toggleButton
            id="tb5"
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>

而且我希望能够指定 'template':

          <toggleButtonTemplate
            getLabel="GetLabel"
            getKeytip="GetKeytip"
            getScreentip="GetScreentip"
            getSupertip="GetSupertip"
            getPressed="Togglebutton_GetPressed"
            onAction="Togglebutton_OnAction"/>

然后将我的色带 XML 更新为:

          <toggleButtonTemplate
            id="tb1"/>
          <toggleButtonTemplate
            id="tb2"/>
          <toggleButtonTemplate
            id="tb3"/>
          <toggleButtonTemplate
            id="tb4"/>
          <toggleButtonTemplate
            id="tb5"/>

这样的事情可能吗?如果是这样,我将如何去做?

是的,这是可能的。使用 .net BCL 处理 XML 文件。您可以在运行时生成功能区 XML,并使用 XmlDocument class from the System.XML namespace. See Adding attributes to an XML node 动态地向 XML 文件添加属性以获取更多信息。