Exemplarische Vorgehensweise: Binden an Daten aus einem Dienst in einem Projekt auf Anwendungsebene

Aktualisiert: Juli 2008

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Word 2007

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Ab Visual Studio 2008 Service Pack 1 (SP1) können Daten an Hoststeuerelemente in Projekten auf Anwendungsebene gebunden werden. In dieser exemplarischen Vorgehensweise werden das Hinzufügen von Steuerelementen zu einem Microsoft Office Word-Dokument, das Binden der Steuerelemente an von MSDN Content Service abgerufene Daten sowie die Reaktion auf Ereignisse zur Laufzeit veranschaulicht.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

Hinweis:

Ihr Computer zeigt möglicherweise für einige der Elemente der Visual Studio-Benutzeroberfläche in der folgenden Anleitung andere Namen oder Standorte an. Diese Elemente sind von der jeweiligen Visual Studio-Version und den verwendeten Einstellungen abhängig. Weitere Informationen finden Sie unter Visual Studio-Einstellungen.

Vorbereitungsmaßnahmen

Zum Durchführen dieser exemplarischen Vorgehensweise benötigen Sie die folgenden Komponenten:

  • Visual Studio Tools for Office (eine optionale Komponente von Visual Studio 2008 Professional und Visual Studio Team System).

    Visual Studio Tools for Office wird standardmäßig mit den aufgeführten Versionen von Visual Studio installiert. Wie Sie überprüfen können, ob die Software installiert ist, erfahren Sie in Installieren von Visual Studio Tools for Office.

  • Word 2007.

Erstellen eines neuen Projekts

Zunächst muss ein Add-In-Projekt für Word erstellt werden.

So erstellen Sie ein neues Projekt

  • Erstellen Sie in Visual Basic oder C# ein Word 2007-Add-in-Projekt mit dem Namen MSDN Content Service.

    Weitere Informationen hierzu finden Sie unter Gewusst wie: Erstellen von Visual Studio Tools for Office-Projekte.

    Visual Studio öffnet die Datei ThisAddIn.vb oder ThisAddIn.cs und fügt dem Projektmappen-Explorer das Projekt hinzu.

Hinzufügen eines Webdiensts

Verwenden Sie für diese exemplarische Vorgehensweise den Webdienst mit dem Namen MSDN Content Service. Dieser Webdienst gibt Informationen aus einem angegebenen MSDN-Artikel in Form einer XML-Zeichenfolge oder als Nur-Text zurück. In einem späteren Schritt wird dargestellt, wie die zurückgegebenen Informationen in einem Inhaltssteuerelement angezeigt werden.

So fügen Sie dem Projekt MSDN Content Service hinzu

  1. Klicken Sie im Menü Daten auf Neue Datenquelle hinzufügen.

  2. Klicken Sie im Assistent zum Konfigurieren von Datenquellen auf Dienst und dann auf Weiter.

  3. Geben Sie im Feld Adresse die folgende URL ein:

    http://services.msdn.microsoft.com/ContentServices/ContentService.asmx

  4. Klicken Sie auf Weiter.

  5. Geben Sie im Feld Namespace die Zeichenfolge ContentService ein, und klicken Sie auf OK.

  6. Klicken Sie im Dialogfeld Assistent zum Hinzufügen von Verweisen auf Fertig stellen.

Hinzufügen eines Inhaltssteuerelements und Binden an Daten zur Laufzeit

In Projekten auf Anwendungsebene werden Steuerelemente zur Laufzeit hinzugefügt und gebunden. Konfigurieren Sie das Inhaltssteuerelement für diese exemplarische Vorgehensweise so, dass Daten vom Webdienst abgerufen werden, wenn der Benutzer auf das Steuerelement klickt.

So fügen Sie ein Inhaltssteuerelement hinzu und binden dieses an Daten

  1. Deklarieren Sie in der ThisAddIn-Klasse die Variablen für MSDN Content Service, das Inhaltssteuerelement und die Datenbindung.

    Private request As ContentService.getContentRequest
    Private proxy As ContentService.ContentServicePortTypeClient
    Private document As ContentService.requestedDocument()
    Private response As ContentService.getContentResponse
    Private appId As ContentService.appId
    Private WithEvents richTextContentControl _
        As Microsoft.Office.Tools.Word.RichTextContentControl
    Private components As System.ComponentModel.Container
    Private primaryDocumentsBindingSource As  _
        System.Windows.Forms.BindingSource
    
    private ContentService.getContentRequest request;
    private ContentService.ContentServicePortTypeClient proxy;
    private ContentService.requestedDocument[] document;
    private ContentService.getContentResponse response;
    private ContentService.appId appId;
    private Microsoft.Office.Tools.Word.RichTextContentControl
        richTextContentControl;
    private System.ComponentModel.Container components;
    private System.Windows.Forms.BindingSource
        primaryDocumentsBindingSource;
    
  2. Fügen Sie der ThisAddIn-Klasse die folgende Methode hinzu. Diese Methode erstellt am Anfang des aktiven Dokuments ein Inhaltssteuerelement.

    Private Sub AddRichTextControlAtRange()
    
        Dim currentDocument As Word.Document = Me.Application.ActiveDocument
        currentDocument.Paragraphs(1).Range.InsertParagraphBefore()
    
        Dim extendedDocument As Document = currentDocument.GetVstoObject()
        richTextContentControl = _
            extendedDocument.Controls.AddRichTextContentControl _
            (currentDocument.Paragraphs(1).Range, "richTextControl2")
        richTextContentControl.PlaceholderText = _
            "Click here to download MSDN Library information about content controls."
    End Sub
    
    private void AddRichTextControlAtRange()
    {
        Word.Document currentDocument = this.Application.ActiveDocument;
        currentDocument.Paragraphs[1].Range.InsertParagraphBefore();
    
        Document extendedDocument = currentDocument.GetVstoObject();
        richTextContentControl = extendedDocument.Controls.AddRichTextContentControl(
            currentDocument.Paragraphs[1].Range, "richTextContentControl");
        richTextContentControl.PlaceholderText =
            "Click here to download MSDN Library information about content controls.";
    }
    
  3. Fügen Sie der ThisAddIn-Klasse die folgende Methode hinzu. Diese Methode initialisiert die Objekte, die zum Erstellen und Senden einer Anforderung an den Webdienst erforderlich sind.

    Private Sub InitializeServiceObjects()
        request = New ContentService.getContentRequest()
        proxy = New ContentService.ContentServicePortTypeClient()
        document = New ContentService.requestedDocument(0) {}
        response = New ContentService.getContentResponse()
        appId = New ContentService.appId()
        components = New System.ComponentModel.Container()
        primaryDocumentsBindingSource = _
            New System.Windows.Forms.BindingSource(components)
    End Sub
    
    private void InitializeServiceObjects()
    {
        request = new ContentService.getContentRequest();
        proxy = new ContentService.ContentServicePortTypeClient();
        document = new ContentService.requestedDocument[1];
        response = new ContentService.getContentResponse();
        appId = new ContentService.appId();
        components = new System.ComponentModel.Container();
        primaryDocumentsBindingSource =
            new System.Windows.Forms.BindingSource(this.components);
    
    }
    
  4. Erstellen Sie einen Ereignishandler, um das MSDN Library-Dokument über Inhaltssteuerelemente abzurufen, wenn ein Benutzer darauf klickt, und um Daten an das Inhaltssteuerelement zu binden.

    Private Sub richTextContentControl_Entering _
        (ByVal sender As Object, ByVal e As ContentControlEnteringEventArgs) _
        Handles richTextContentControl.Entering
    
        document(0) = New ContentService.requestedDocument()
        With document(0)
            .type = ContentService.documentTypes.primary
            .selector = "Mtps.Xhtml"
        End With
    
        With request
            .contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d"
            .locale = "en-us"
            .version = "VS.90"
            .requestedDocuments = document
        End With
    
        response = proxy.GetContent(appId, request)
    
        primaryDocumentsBindingSource.DataSource = _
            response.primaryDocuments(0).Any.InnerText
        richTextContentControl.DataBindings.Add( _
            "Text", _
            primaryDocumentsBindingSource.DataSource, _
            "", _
            True, _
            System.Windows.Forms.DataSourceUpdateMode.OnValidation)
    End Sub
    
    void richTextContentControl_Entering(object sender, ContentControlEnteringEventArgs e)
    {
        document[0] = new ContentService.requestedDocument();
        document[0].type = ContentService.documentTypes.primary;
        document[0].selector = "Mtps.Xhtml";
    
        request.contentIdentifier = "ed59e522-dd6e-4c82-8d49-f5dbcfcc950d";
        request.locale = "en-us";
        request.version = "VS.90";
        request.requestedDocuments = document;
    
        response = proxy.GetContent(appId, request);
    
        primaryDocumentsBindingSource.DataSource =
            response.primaryDocuments[0].Any.InnerText;
        richTextContentControl.DataBindings.Add(
            "Text",
            primaryDocumentsBindingSource.DataSource,
            "",
            true,
            System.Windows.Forms.DataSourceUpdateMode.OnValidation);
    }
    
  5. Rufen Sie in der ThisAddIn_Startup-Methode die AddRichTextControlAtRange-Methode und die InitializeServiceObjects-Methode auf. C#-Programmierer müssen einen Ereignishandler hinzufügen.

    Private Sub ThisAddIn_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup
        AddRichTextControlAtRange()
        InitializeServiceObjects()
    End Sub
    
    private void ThisAddIn_Startup(object sender, System.EventArgs e)
    {
        AddRichTextControlAtRange();
        InitializeServiceObjects();
        this.richTextContentControl.Entering +=
            new EventHandler<ContentControlEnteringEventArgs>
                (richTextContentControl_Entering);
    }
    

Testen des Add-Ins

Beim Öffnen von Word wird das RichTextContentControl-Steuerelement angezeigt. Der Text im Steuerelement ändert sich, wenn Sie darauf klicken.

So testen Sie das Add-In

  1. Drücken Sie F5.

  2. Klicken Sie auf das Inhaltssteuerelement.

    Informationen werden vom MSDN Content Service heruntergeladen und im Inhaltssteuerelement angezeigt.

Siehe auch

Konzepte

Binden von Daten an Steuerelemente

Änderungsprotokoll

Date

Versionsgeschichte

Grund

Juli 2008

Thema hinzugefügt.

SP1-Featureänderung.