Freigeben über


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

Sie können Daten in Projekten auf Anwendungsebene an Hoststeuerelemente binden. 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.

Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Anwendungsebene für Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.

In dieser exemplarischen Vorgehensweise werden die folgenden Aufgaben veranschaulicht:

Tipp

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:

-

Eine Version von Visual Studio 2010, die die Microsoft Office-Entwicklungstools einschließt. Weitere Informationen finden Sie unter [Konfigurieren eines Computers zum Entwickeln von Office-Lösungen](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 oder Word 2010. 

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-Add-In-Projekt mit dem Namen "MTPS Content Service".

    Weitere Informationen finden Sie unter Gewusst wie: Erstellen von Office-Projekten in Visual Studio.

    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 MTPS 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 MTPS 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 MTPS 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()
    
        ' Use the following line of code in projects that target the .NET Framework 4.
        Dim extendedDocument As Document = Globals.Factory.GetVstoObject(currentDocument)
    
        ' In projects that target the .NET Framework 3.5, use the following line of code instead.
        ' 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();
    
        // Use the following line of code in projects that target the .NET Framework 4.
        Document extendedDocument = Globals.Factory.GetVstoObject(currentDocument);
    
        // In projects that target the .NET Framework 3.5, use the following line of code instead.
        // 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 += 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 MTPS Content Service heruntergeladen und im Inhaltssteuerelement angezeigt.

Siehe auch

Weitere Ressourcen

Binden von Daten an Steuerelemente in Office-Projektmappen