5 Stimmen

Hinzufügen einer benutzerdefinierten Multifunktionsleistengruppe zu einer vorhandenen benutzerdefinierten Multifunktionsleistengruppe in Word 2007

Wie kann ich eine neue Gruppe zu einem bestehenden (3rd party) benutzerdefinierten Ribbon Tab Add-In hinzufügen? Ich weiß, dass ich zu Out-of-Box-Ribbons hinzufügen kann, indem ich den Tabs idMSo-Wert angebe, aber wie kann ich das für eine benutzerdefinierte Ribbon-Registerkarte tun. Ich habe bereits versucht, den ID-Wert der benutzerdefinierten Multifunktionsleiste, aber es juts dupliziert die Multifunktionsleiste? habe auch versucht, idMso und idQ Attribute, die in der erforderlichen benutzerdefinierten Registerkarte Id aber keinen Erfolg.

Ich kann sie durch Angabe des idMso-Werts zur Out-of-Box-Registerkartengruppe hinzufügen, aber nicht zur benutzerdefinierten Registerkarte

Grüße

6voto

AndreiM Punkte 4460

idQ ist der richtige Weg. Mit diesem Attribut können Sie eine qualifizierte ID angeben, d. h. eine ID innerhalb eines Namespaces. Einige Namespaces wie z.B. mso sind eingebaut, aber es können auch eigene Namensräume angegeben werden.

Der Schlüssel ist, dass Sie eine xmlns:foo="bar" Attribut in Ihrem customUI Element, das mit dem Namensraum übereinstimmt, der in der Datei customUI des Add-Ins eines Drittanbieters, das Sie zu erweitern versuchen.

Nehmen wir zum Beispiel an, ich habe die XML-Datei für das folgende Add-In eines Drittanbieters:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"
              xmlns:foo="bar">
  <mso:ribbon>
    <mso:tabs>
      <mso:tab idQ="foo:someTab" label="an extensible custom tab">
        <mso:group id="someGroup" label="a custom group">
          <mso:button id="someButton" label="button" />
        </mso:group>
      </mso:tab>
    </mso:tabs>
  </mso:ribbon>
</mso:customUI>

Nun möchte ich die bestehende foo:someTab mit einer neuen Gruppe in einem anderen Add-In oder einer Vorlage. Ich definiere eine customUI in das neue Add-In einfügen und dabei sicherstellen, dass das gleiche Namespace-Attribut in der Datei customUI Element. Dann verweise ich auf die vorhandene Registerkarte mit idQ="foo:someTab" :

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <mso:customUI xmlns:mso="http://schemas.microsoft.com/office/2009/07/customui"
                  xmlns:foo="bar">
      <mso:ribbon>
        <mso:tabs>
          <mso:tab idQ="foo:someTab" label="an extensible custom tab">
            <mso:group id="someOtherGroup" label="a different custom group">
              <mso:button id="someOtherButton" label="a different button" />
            </mso:group>
          </mso:tab>
        </mso:tabs>
      </mso:ribbon>
    </mso:customUI>

Daraus ergeben sich zwei Gruppen auf einer einzigen benutzerdefinierten Registerkarte. Der gleiche Ansatz kann verwendet werden, um Gruppen und andere Container-Steuerelemente zu erweitern.

Ich habe dies durch sorgfältiges Studium der Office 2010 Multifunktionsleiste UI XSD . Leider ist es außerhalb der XSD selbst schlecht dokumentiert.

0voto

DarinH Punkte 4818

Die Farbbänder in Word sind etwas seltsam. Grundsätzlich ist die Art, wie ich es verstehe, ist Word fragt Ihre add in einmal, über GetCustomUI, für alle benutzerdefinierten UI, Ribbom Erklärungen, Backstage, etc, die Sie einschließen möchten.

Und das ist die einzige Chance, die Sie haben. Sie können keine Schaltflächen dynamisch hinzufügen, sobald Sie Word das XML für Ihre benutzerdefinierten UI-Elemente mitgeteilt haben. Sie KÖNNEN jedoch ausgeblendete Elemente einblenden, damit es so aussieht, als würden Sie dynamisch Elemente zu einer Multifunktionsleiste hinzufügen.

Das Problem mit einer Multifunktionsleiste von Drittanbietern ist, dass Word bereits die benutzerdefinierte Benutzeroberfläche von der Drittanbieter-App erhalten hat, so dass es wahrscheinlich ist, dass Sie auf das gleiche Problem stoßen, das Drittanbieter haben würden, wenn sie eine Schaltfläche dynamisch zu ihrer eigenen Multifunktionsleiste hinzufügen wollten.

Ich glaube, dass Word zusätzliche Schritte unternimmt, um Ihnen das Hinzufügen von Schaltflächen zu "eingebauten" Ribbons zu ermöglichen, aber das gilt nicht für benutzerdefinierte Ribbons, soweit ich weiß.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X