Passo a passo: Controles de conteúdo ligação às partes do XML personalizado
Essa explicação passo a passo demonstra como associar controles de conteúdo em uma personalização da palavra para nível aos dados XML são armazenados no documento.
Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento para Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.
O Word permite que você armazene os dados XML, denominados partes XML personalizadas, em um documento.Você pode controlar a exibição de esses dados associando controles de conteúdo a elementos em uma parte personalizado XML.O documento de exemplo em este passo-a-passo exibe informações do funcionário que é armazenado em uma parte personalizado XML.Quando você abre o documento, os controles de conteúdo exibe os valores dos elementos XML.As alterações feitas ao texto nos controles de conteúdo são salvas na parte personalizado XML.
Essa explicação passo a passo mostra as seguintes tarefas:
Adicionando controles de conteúdo do documento do word um documento em um nível projeto em tempo de design.
Criando um arquivo de dados XML e um esquema XML que define os elementos para associar aos controles de conteúdo.
Anexando o esquema XML para o documento em tempo de design.
Adicionando o conteúdo do arquivo XML a parte no documento XML personalizado em tempo de execução.
Associando controles de conteúdo aos elementos na parte personalizado XML.
Associando DropDownListContentControl a um conjunto de valores que são definidos no esquema XML.
Observaçã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 de Visual Studio. |
Pré-requisitos
Para completar este passo-a-passo, são necessários os seguintes componentes:
-
Uma edição do Visual Studio 2012 que inclui o Microsoft Office Developer Tools. Para obter mais informações, consulte [Configurando um computador para desenvolver soluções do Office](bb398242\(v=vs.110\).md).
- Word 2013 ou Word 2010.
Para uma versão de vídeo de este tópico, consulte Como: exibição Controles de conteúdo de associação personalizados a partes XML.
Criando um novo projeto do documento do word
Crie um documento do word que você use na explicação passo a passo.
Para criar um novo projeto do documento do word
Crie um projeto do documento do word com o nome EmployeeControls.crie um novo documento para a solução.Para obter mais informações, consulte Como: criar projetos do Office em Visual Studio.
Visual Studio abre o novo documento do word no designer e adiciona o projeto de EmployeeControls a Gerenciador de Soluções.
Adicionando controles de conteúdo do documento
Criar uma tabela que contém três tipos diferentes de controles de conteúdo onde o usuário pode exibir ou editar informações sobre um funcionário.
Para adicionar controles de conteúdo do documento
Em o documento do word que é hospedado no designer de Visual Studio , em fita, clique na guia de Inserir .
Em o grupo de Tabelas , clique em Tabela, e inserir uma tabela com 2 colunas e linhas 3.
Digite o texto na primeira coluna de modo que se assemelha a coluna seguir:
Nome de funcionário
data de admissão
Nome
Em a segunda coluna da tabela, clique na primeira linha ao lado de Nome do Funcionário().
Em fita, clique na guia de Desenvolvedor .
Observação Se a guia de Desenvolvedor não estiver visível, primeiro você deve mostrar.Para obter mais informações, consulte Como: Mostrar guia desenvolvedor na faixa de opções.
Em o grupo de Controles , clique no botão de Texto para adicionar PlainTextContentControl à primeira célula.
Em a segunda coluna da tabela, clique na segunda linha ao lado de Data de Contratação().
Em o grupo de Controles , clique no botão de Seletor de Data para adicionar DatePickerContentControl para a segunda célula.
Em a segunda coluna da tabela, clique na terceira linha ao lado de Título().
Em o grupo de Controles , clique no botão de Lista Suspensa para adicionar DropDownListContentControl para a última célula.
Esta é a interface do usuário inteira para este projeto.Se você executar o projeto agora, você pode digitar texto na primeira linha e selecione uma data na segunda linha.A próxima etapa é anexar os dados que você deseja exibir o documento em um arquivo XML.
criando o arquivo de dados XML
Normalmente, você terá dados XML para armazenar em uma parte personalizado XML de uma fonte externa, como um arquivo ou um banco de dados.Em essa explicação passo a passo, você cria um arquivo XML que contém dados de funcionários, marcado por elementos que você associará aos controles de conteúdo no documento.Para tornar dados disponíveis em tempo de execução, inserir o arquivo XML como um recurso no assembly de personalização.
para criar o arquivo de dados
No menu Project, clique em Add New Item.
A caixa de diálogo Adicionar Novo Item aparece.
Em o painel de Modelos , Arquivo XMLselecione.
Nomeie o arquivo employees.xml, clique em Adicionar.
O arquivo de employees.xml abre na editor de códigos.
Substitua o conteúdo do arquivo de employees.xml com o seguinte texto.
<?xml version="1.0" encoding="utf-8" ?> <employees xmlns="https://schemas.microsoft.com/vsto/samples"> <employee> <name>Karina Leal</name> <hireDate>1999-04-01</hireDate> <title>Manager</title> </employee> </employees>
Em Gerenciador de Soluções, clique employees.xml.
Em a janela de Propriedades , selecione a propriedade de Ação de Compilação em seguida, altere o valor para Recurso Incorporado.
Esta etapa inserir o arquivo XML como um recurso no assembly quando você criar o projeto.Isso permite que você acesse em tempo de execução o conteúdo do arquivo XML.
criando um esquema XML
Se você deseja associar um controle de conteúdo a um único elemento em uma parte personalizado XML, você não precisa usar um esquema XML.Em o entanto, para associar DropDownListContentControl a um conjunto de valores, você deve criar um esquema XML que valida o arquivo de dados XML que você criou anteriormente.o esquema XML define os valores possíveis para o elemento de title .Você associará DropDownListContentControl a esse elemento posteriormente em este passo-a-passo.
para criar um esquema XML
No menu Project, clique em Add New Item.
A caixa de diálogo Adicionar Novo Item aparece.
Em o painel de Modelos , Esquema XMLselecione.
Nomeie o esquema employees.xsd e clique Adicionar.
O designer de esquema abre.
Em Gerenciador de Soluções, clique com o botão direito do mouse employees.xsd, clique em Exibir Código.
Substitua o conteúdo do arquivo de employees.xsd com o esquema a seguir.
<?xml version="1.0" encoding="utf-8" ?> <xs:schema xmlns="https://schemas.microsoft.com/vsto/samples" targetNamespace="https://schemas.microsoft.com/vsto/samples" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"> <xs:element name="employees" type="EmployeesType"></xs:element> <xs:complexType name="EmployeesType"> <xs:all> <xs:element name="employee" type="EmployeeType"/> </xs:all> </xs:complexType> <xs:complexType name="EmployeeType"> <xs:sequence> <xs:element name="name" type="xs:string" minOccurs="1" maxOccurs="1"/> <xs:element name="hireDate" type="xs:date" minOccurs="1" maxOccurs="1"/> <xs:element name="title" type="TitleType" minOccurs="1" maxOccurs="1"/> </xs:sequence> </xs:complexType> <xs:simpleType name="TitleType"> <xs:restriction base="xs:string"> <xs:enumeration value ="Engineer"/> <xs:enumeration value ="Designer"/> <xs:enumeration value ="Manager"/> </xs:restriction> </xs:simpleType> </xs:schema>
Em o menu de Arquivo , clique Salvar Tudo para salvar as alterações a employees.xml e arquivos de employees.xsd .
Anexando o esquema XML para o documento
Você deve anexar o esquema XML para o documento para associar DropDownListContentControl para valores válidos de elemento de title .
Para anexar o esquema XML para o documento
Ativar EmployeeControls.docx no designer.
Em fita, clique na guia de Desenvolvedor .
Em o grupo de XML , clique Esquema.
Em a caixa de diálogo de Modelos e Suplementos , clique na guia de Esquema XML , clique em Adicionar Esquema.
Navegue para o esquema de employees.xsd que você criou anteriormente, que está localizado no diretório do projeto, e clique Abrir.
Clique OK na caixa de diálogo de Configurações do Esquema .
OK Clique em para fechar a caixa de diálogo de Modelos e Suplementos .
o painel de tarefas de Estrutura XML abre.
Feche o painel de tarefas de Estrutura XML .
Adicionando uma parte do documento XML personalizado
Antes que você possa associar controles de conteúdo aos elementos no arquivo XML, você deve adicionar o conteúdo do arquivo XML para uma nova solicitação personalizado XML no documento.
Para adicionar parte do documento XML personalizado
Em Gerenciador de Soluções, clique com o botão direito do mouse ThisDocument.cs ou ThisDocument.vb, clique em Exibir Código.
Adicione as seguintes declarações da classe ThisDocument .Esse código declara vários objetos que você usará para adicionar uma parte personalizado XML para o documento.
<Cached()> _ Public employeeXMLPartID As String = String.Empty Private employeeXMLPart As Office.CustomXMLPart Private Const prefix As String = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'"
[CachedAttribute()] public string employeeXMLPartID = string.Empty; private Office.CustomXMLPart employeeXMLPart; private const string prefix = "xmlns:ns='https://schemas.microsoft.com/vsto/samples'";
Adicione o seguinte método à classe de ThisDocument .Este método é o conteúdo do arquivo de dados XML que é inserido como um recurso no assembly, e retorna o conteúdo como uma cadeia de caracteres de XML.
Private Function GetXmlFromResource() As String Dim asm As System.Reflection.Assembly = _ System.Reflection.Assembly.GetExecutingAssembly() Dim stream1 As System.IO.Stream = asm.GetManifestResourceStream( _ "EmployeeControls.employees.xml") Using resourceReader As System.IO.StreamReader = _ New System.IO.StreamReader(stream1) If resourceReader IsNot Nothing Then Return resourceReader.ReadToEnd() End If End Using Return Nothing End Function
private string GetXmlFromResource() { System.Reflection.Assembly asm = System.Reflection.Assembly.GetExecutingAssembly(); System.IO.Stream stream1 = asm.GetManifestResourceStream( "EmployeeControls.employees.xml"); using (System.IO.StreamReader resourceReader = new System.IO.StreamReader(stream1)) { if (resourceReader != null) { return resourceReader.ReadToEnd(); } } return null; }
Adicione o seguinte método à classe de ThisDocument .O método de AddCustomXmlPart cria uma nova solicitação personalizado XML que contém uma cadeia de caracteres XML que é passada para o método.
Para garantir que a parte XML personalizado foi criada somente uma vez, o método cria a parte personalizado XML somente se a parte personalizado XML com um GUID compatível não existe no documento.A primeira vez que este método é chamado, salvará o valor da propriedade de Id a cadeia de caracteres de employeeXMLPartID .O valor da cadeia de caracteres de employeeXMLPartID é mantido no documento porque ele foi declarado usando o atributo de CachedAttribute .
Private Sub AddCustomXmlPart(ByVal xmlData As String) If xmlData IsNot Nothing Then employeeXMLPart = Me.CustomXMLParts.SelectByID(employeeXMLPartID) If (employeeXMLPart Is Nothing) Then employeeXMLPart = Me.CustomXMLParts.Add(xmlData) employeeXMLPart.NamespaceManager.AddNamespace("ns", _ "https://schemas.microsoft.com/vsto/samples") employeeXMLPartID = employeeXMLPart.Id End If End If End Sub
private void AddCustomXmlPart(string xmlData) { if (xmlData != null) { employeeXMLPart = this.CustomXMLParts.SelectByID(employeeXMLPartID); if (employeeXMLPart == null) { employeeXMLPart = this.CustomXMLParts.Add(xmlData); employeeXMLPart.NamespaceManager.AddNamespace("ns", @"https://schemas.microsoft.com/vsto/samples"); employeeXMLPartID = employeeXMLPart.Id; } } }
Associando controles de conteúdo aos elementos na parte personalizado XML
Associar cada controle de conteúdo a um elemento na parte personalizado XML usando a propriedade de XMLMapping de cada controle de conteúdo.
Para associar o conteúdo os controles aos elementos em XML parte personalizado
Adicione o seguinte método à classe de ThisDocument .Este método associa cada controle de conteúdo a um elemento na parte personalizado XML e define o formato de exibição da data de DatePickerContentControl.
Private Sub BindControlsToCustomXmlPart() Dim xPathName As String = "ns:employees/ns:employee/ns:name" Me.PlainTextContentControl1.XMLMapping.SetMapping(xPathName, _ prefix, employeeXMLPart) Dim xPathDate As String = "ns:employees/ns:employee/ns:hireDate" Me.DatePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy" Me.DatePickerContentControl1.XMLMapping.SetMapping(xPathDate, _ prefix, employeeXMLPart) Dim xPathTitle As String = "ns:employees/ns:employee/ns:title" Me.DropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, _ prefix, employeeXMLPart) End Sub
private void BindControlsToCustomXmlPart() { string xPathName = "ns:employees/ns:employee/ns:name"; this.plainTextContentControl1.XMLMapping.SetMapping(xPathName, prefix, employeeXMLPart); string xPathDate = "ns:employees/ns:employee/ns:hireDate"; this.datePickerContentControl1.DateDisplayFormat = "MMMM d, yyyy"; this.datePickerContentControl1.XMLMapping.SetMapping(xPathDate, prefix, employeeXMLPart); string xPathTitle = "ns:employees/ns:employee/ns:title"; this.dropDownListContentControl1.XMLMapping.SetMapping(xPathTitle, prefix, employeeXMLPart); }
Executando o código quando o documento está aberto
Crie a parte personalizado XML e associar os controles personalizados para dados quando o documento está aberto.
Para executar o código quando o documento está aberto
Adicione o seguinte código ao método de ThisDocument_Startup da classe de ThisDocument .Esse código obtém a cadeia de caracteres XML do arquivo de employees.xml , adiciona a cadeia de caracteres de XML para uma nova solicitação personalizado XML no documento, e associa os controles de conteúdo aos elementos na parte personalizado XML.
Dim xmlData As String = GetXmlFromResource() If xmlData IsNot Nothing Then AddCustomXmlPart(xmlData) BindControlsToCustomXmlPart() End If
string xmlData = GetXmlFromResource(); if (xmlData != null) { AddCustomXmlPart(xmlData); BindControlsToCustomXmlPart(); }
Testar o projeto.
Quando você abre o documento, os controles de conteúdo exibem dados dos elementos na parte personalizado XML.Você pode clicar DropDownListContentControl para selecionar um dos três valores válidos para o elemento de title , que são definidos no arquivo de employees.xsd .Se você edita os dados em qualquer um dos controles de conteúdo, os novos valores são salvos na parte personalizado XML no documento.
Para testar os controles de conteúdo
Pressione F5 para executar o projeto.
Verifique se a tabela no documento se assemelha a tabela a seguir.Cada uma das cadeias de caracteres na segunda coluna é obtida de um elemento na parte personalizado XML no documento.
Nome de funcionário
Karina Leal
data de admissão
1º de abril de 1999
Nome
gerenciador
Clique na célula à direita da célula de nomes de funcionários e digite um nome diferente.
Clique na célula à direita da célula da data de admissão e selecione uma data diferente no selecionador de data.
Clique na célula à direita da célula de título e selecione um novo item de lista suspensa.
Salve e feche o documento.
Em o Arquivo Explorer, abra a pasta \ bin \ debug no local do seu projeto.
Clique com o botão direito do mouse EmployeeControls.docx e clique em Renomear.
nomeie o arquivo EmployeeControls.docx.zip.
O documento de EmployeeControls.docx é salvo no formato XML aberto.Renomeando este documento com a extensão de nome de arquivo .zip, você pode examinar o conteúdo do documento.Para obter mais informações sobre XML aberto, consulte o artigo técnico Introdução aos formatos de arquivo XML do Office (2007) Abra.
Clique duas vezes no arquivo de EmployeeControls.docx.zip.
Clique duas vezes na pasta de customXml .
Clique com o botão direito do mouse item2.xml e clique em Abrir.
Este arquivo contém a parte personalizado XML que você adicionou ao documento.
Verifique se name, hireDate, e os elementos de title contém os novos valores que você inseriu nos controles de conteúdo no documento.
Feche o arquivo de item2.xml .
Próximas etapas
Você pode aprender mais sobre como usar controles de conteúdo de esses tópicos:
use todos os controles de conteúdo disponíveis para criar um modelo.Para obter mais informações, consulte Passo a passo: Criando um modelo usando os controles de conteúdo.
Modifique os dados nas partes personalizados XML quando o documento é fechado.Em a próxima vez que o usuário abre o documento, os controles de conteúdo que são associados aos elementos XML exibirão novos dados.
use controles de conteúdo para proteger partes de um documento.Para obter mais informações, consulte Como: proteger partes de documentos usando os controles de conteúdo.
Consulte também
Tarefas
Como: adicionar controles de conteúdo para documentos do Word
Como: proteger partes de documentos usando os controles de conteúdo
Conceitos
Automação do Word utilizando o Extended objetos
Itens de host e visão geral sobre controles de Host
Limitações de programação de itens de Host e controles de Host
Adicionar controles a documentos do Office em tempo de execução