Demonstra Passo a passo: Vinculação de dados de um serviço em um projeto de nível de aplicativo

Você pode vincular dados a controles de host em projetos de nível de aplicativo. Esta explicação passo a passo demonstra como adicionar controles a um documento do Word de Microsoft Office, vincular controles a dados recuperados do serviço de conteúdo do MSDN e responder a eventos em tempo de execução.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de aplicativo para Word 2007 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

This walkthrough illustrates the following tasks:

ObservaçãoObservação

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Configurações do Visual Studio.

Pré-requisitos

You need the following components to complete this walkthrough:

-

Uma edição do Visual Studio 2010 que inclua as ferramentas de desenvolvedor do Microsoft Office. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 ou Word 2010. 

Creating a New Project

A primeira etapa é criar um projeto de suplemento do Word.

Para criar um novo projeto.

  • Crie um projeto de suplemento do Word com o nome do serviço de conteúdo de MTPS, usando o Visual Basic ou C#.

    For more information, see Como: Criar projetos do Office em Visual Studio.

    Abre a Visual Studio a ThisAddIn.vb ou ThisAddIn.cs de arquivo e adiciona o projeto Solution Explorer.

Adicionando um serviço Web

Para esta explicação, use um serviço Web denominado serviço de MTPS de conteúdo. Esse Web service retorna informações de um artigo do MSDN especificado na forma de uma seqüência de caracteres XML ou texto sem formatação. Uma etapa posterior mostra como exibir as informações retornadas em um controle de conteúdo.

Para adicionar o serviço de MTPS de conteúdo para o projeto

  1. On the Data menu, click Add New Data Source.

  2. No Data Source Configuration Wizard, clique em Servicee em seguida, clique em próximo.

  3. No endereço , digite a seguinte URL:

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

  4. Click Go.

  5. No Namespace , digite ContentServicee clique em OK.

  6. No Assistente para adicionar de referência caixa de diálogo, clique em Concluir.

Adicionando um controle de conteúdo e a vinculação de dados em tempo de execução

Em projetos de nível de aplicativo, você pode adicionar e vincula controles em tempo de execução. Para esta explicação, configure o controle de conteúdo para recuperar dados do serviço da Web quando um usuário clica dentro do controle.

Para adicionar um controle content e vincular a dados

  1. No ThisAddIn classe, declare as variáveis para o serviço de MTPS de conteúdo, o controle de conteúdo e a vinculação de dados.

    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. Adicione o seguinte método para o ThisAddIn classe. Esse método cria um controle de conteúdo no início do documento ativo.

    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. Adicione o seguinte método para o ThisAddIn classe. Esse método inicializa os objetos necessários para criar e enviar uma solicitação de serviço da Web.

    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. Criar um manipulador de eventos para recuperar o documento Biblioteca MSDN sobre controles de conteúdo quando um usuário clica dentro do controle de conteúdo e vincular os dados para o controle de conteúdo.

    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. Chamar o AddRichTextControlAtRange e InitializeServiceObjects métodos a partir de ThisAddIn_Startup método. Para C# programadores, adicione um manipulador de eventos.

    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;
    }
    

Testando o suplemento

Quando você abrir o Word, o RichTextContentControl controle aparece. O texto do controle muda quando você clica dentro dele.

Para testar o suplemento

  1. Press F5.

  2. Clique dentro do controle de conteúdo.

    Informações baixadas do serviço de conteúdo MTPS e exibidas dentro do controle de conteúdo.

Consulte também

Outros recursos

A ligação de dados a controles em soluções do Office