Tutorial: Establecer enlaces a datos de un servicio en un proyecto en el nivel de la aplicación

Puede enlazar los datos a los controles host en proyectos de nivel de aplicación. En este tutorial se muestra la forma de agregar controles a un documento de Microsoft Office Word, enlazarlos a los datos recuperados de MSDN Content Service y responder a los eventos en tiempo de ejecución.

Se aplica a: la información de este tema se aplica a los proyectos de nivel de aplicación para Word 2007 y Word 2010. Para obtener más información, vea Características disponibles por aplicación y tipo de proyecto de Office.

En este tutorial se muestran las tareas siguientes:

Nota

Es posible que su equipo muestre nombres o ubicaciones diferentes para algunos de los elementos de la interfaz de usuario de Visual Studio incluidos en las instrucciones siguientes. La edición de Visual Studio que se tenga y la configuración que se utilice determinan estos elementos. Para obtener más información, vea Valores de configuración de Visual Studio.

Requisitos previos

Necesita los componentes siguientes para completar este tutorial:

-

Una edición de Visual Studio 2010 que incluye las herramientas para desarrolladores de Microsoft Office. Para obtener más información, vea [Configurar un equipo para desarrollar soluciones de Office](bb398242\(v=vs.100\).md).
  • Microsoft Office Word 2007 o Word 2010. 

Crear un proyecto nuevo

El primer paso consiste en crear un proyecto de complemento de Word.

Para crear un nuevo proyecto

  • Cree un proyecto de complemento de Word denominado Servicio de contenido de MTPS con Visual Basic o C#.

    Para obtener más información, vea Cómo: Crear proyectos de Office en Visual Studio.

    Visual Studio abre el archivo ThisAddIn.vb o ThisAddIn.cs y agrega el proyecto al Explorador de soluciones.

Agregar un servicio Web

Para este tutorial, utilice un servicio Web denominado MTPS Content Service. Este servicio Web devuelve información de un artículo de MSDN especificado como una cadena XML o como texto sin formato. En un paso posterior se explica cómo mostrar la información devuelta en un control de contenido.

Para agregar el servicio MTPS Content Service al proyecto

  1. En el menú Datos, haga clic en Agregar nuevo origen de datos.

  2. En el Asistente para la configuración de orígenes de datos, haga clic en Servicio y después en Siguiente.

  3. En el campo Dirección, escriba la URL siguiente:

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

  4. Haga clic en Ir.

  5. En el campo Espacio de nombres, escriba ContentService, y haga clic en Aceptar.

  6. En el cuadro de diálogo Agregar referencia de servicio, haga clic en Finalizar.

Agregar un control de contenido y enlazarlo a datos en tiempo de ejecución

En los proyectos en el nivel de la aplicación, los controles se agregan y enlazan en tiempo de ejecución. Para este tutorial, configure el control de contenido para recuperar datos del servicio Web cuando un usuario haga clic dentro del control.

Para agregar un control de contenido y enlazarlo a datos

  1. En la clase ThisAddIn, declare las variables para el servicio de contenido de MTPS, el control de contenido y el enlace de datos.

    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. Agregue el método siguiente a la clase ThisAddIn. Este método crea un control de contenido al principio del documento activo.

    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. Agregue el método siguiente a la clase ThisAddIn. Este método inicializa los objetos necesarios para crear y enviar una solicitud al servicio 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. Cree un controlador de eventos para recuperar el documento de MSDN Library sobre controles de contenido cuando un usuario haga clic dentro del control de contenido y enlace los datos al control de contenido.

    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. Llame a los métodos AddRichTextControlAtRange y InitializeServiceObjects del método ThisAddIn_Startup. Si programa en C#, agregue un controlador 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;
    }
    

Probar el complemento

Cuando abre Word, aparece el control RichTextContentControl. El texto del control cambia al hacer clic dentro de él.

Para probar el complemento

  1. Presione F5.

  2. Haga clic dentro del control de contenido.

    Se descarga información de MTPS Content Service y se muestra dentro del control de contenido.

Vea también

Otros recursos

Enlazar datos a controles en soluciones de Office