Mit Einführung von MS Office 2010 gibt es einige Neuerungen in der VSTO Entwicklung. Ich möchte in diesem Post zeigen, wie einfach der neue Backstage Bereich in Outlook 2010 angepasst werden kann.
Was ist überhaupt der “Backstage Bereich”?

Der Backstage Bereich wurde in allen Office Applikationen eingeführt. In diesem hat der Entwickler die Möglichkeit, Konfigurationsdaten zu visualisieren und/oder zur Bearbeitung zur Verfügung zu stellen.
Ich habe vor kurzem ein VSTO 4 Add-In geschrieben, in dem ich den Backstage genau dafür eingesetzt habe. Ich benötige für mein Add-In Benutzerdaten damit sich der Benutzer mit einer Telefonanlage verbinden kann. Früher hätte ich dafür einen Dialog mit der gesamten Verwaltung erstellt. Dabei musste ich immer schauen, wie integrieren ich diesen Dialog in Outlook, so dass der Benutzer diesen auch findet und ich wenig “Ärger” damit habe. Genau dieses Problem ist nun aus der Welt.
Wie erweitere ich den Backstage Bereich?
Leider steht die Erweiterung des Backstage Bereiches nicht im Visual Studio Ribbon Designer zur Verfügung, sondern muss über den XML Weg gemacht werden. In Visual Studio 2010 muss dafür eine neue Ribbon1.xml und Ribbon1.cs Datei angelegt werden. Nun kann beim Öffnen der XML Datei der <backstage> Tag ausgewählt werden:
<?xml version="1.0" encoding="UTF-8"?>
Innerhalb des Backstage-Tag können verschiedene Bereiche deklariert werden. In meinem Beispiel habe ich einen Tab <tab> erstellt und innerhalb dieses Tabs eine <firstColumn>. In diesen Bereich erstelle ich ein Label, ein Button und zwei editBoxen. Die Daten sollen automatisch in der Registry abgespeichert und wieder geladen werden. Damit dies passiert, müssen verschiedene Callback Methoden definiert werden.
Mit der Funktion getText lese ich den Text aus der Registry aus und zeige ihn in der editBox an. Änderungen in der editBox bekommt man nur mit, wenn der Callback onChange implementiert wird. Damit nicht für jeden Callback eine eigene Methode geschrieben werden muss, kann ein tag vergeben werden. Anhand dieses Tags kann im CodeBehind heraus´gefunden werden, welches Control gerade angesprochen werden soll.
public string GetConfig(IRibbonControl control)
{
if (control.Tag == "ebPhoneIP")
{
return _phoneIp;
}
else if (control.Tag == "ebPhoneExtension")
{
return _phoneExtension;
}
return String.Empty;
}
Eine typische Callback Methode erwartet als Parameter ein IRibbonControl. Das Control liefert einen control.Tag, den man zum Vergleich heranziehen kann. Die Signatur des onChange-Callback übergibt die Änderungen der editBox als String:
public void OnChangeConfig(IRibbonControl control, string text)
{
if (control.Tag == "ebPhoneIP")
_phoneIp = text;
else if (control.Tag == "ebPhoneExtension")
_phoneExtension = text;
}
Dies ist nur ein einfaches Beispiel für die Backstage Erweiterung. Im Backstage Bereich können Combox-Boxen, Bilder, Style-Elemente etc. benutzt und somit komplexere Einstellungsmöglichkeiten für das Add-In hinterlegt… oder die neuste Twitter-Message dargestellt werden. ;-)
Weiterführende Links: