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:
Agregar un control RichTextContentControl a un documento en tiempo de ejecución.
Enlazar el control RichTextContentControl a datos de un servicio Web.
Responder al evento Entering de un control RichTextContentControl.
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
En el menú Datos, haga clic en Agregar nuevo origen de datos.
En el Asistente para la configuración de orígenes de datos, haga clic en Servicio y después en Siguiente.
En el campo Dirección, escriba la URL siguiente:
http://services.msdn.microsoft.com/ContentServices/ContentService.asmx
Haga clic en Ir.
En el campo Espacio de nombres, escriba ContentService, y haga clic en Aceptar.
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
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;
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."; }
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); }
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); }
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
Presione F5.
Haga clic dentro del control de contenido.
Se descarga información de MTPS Content Service y se muestra dentro del control de contenido.