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çã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 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.

link para vídeo 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

  1. Em o documento do word que é hospedado no designer de Visual Studio , em fita, clique na guia de Inserir .

  2. Em o grupo de Tabelas , clique em Tabela, e inserir uma tabela com 2 colunas e linhas 3.

  3. Digite o texto na primeira coluna de modo que se assemelha a coluna seguir:

    Nome de funcionário

    data de admissão

    Nome

  4. Em a segunda coluna da tabela, clique na primeira linha ao lado de Nome do Funcionário().

  5. Em fita, clique na guia de Desenvolvedor .

    ObservaçãoObservaçã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.

  6. Em o grupo de Controles , clique no botão PlainTextContentControl de Texto para adicionar PlainTextContentControl à primeira célula.

  7. Em a segunda coluna da tabela, clique na segunda linha ao lado de Data de Contratação().

  8. Em o grupo de Controles , clique no botão DatePickerContentControl de Seletor de Data para adicionar DatePickerContentControl para a segunda célula.

  9. Em a segunda coluna da tabela, clique na terceira linha ao lado de Título().

  10. Em o grupo de Controles , clique no botão DropDownListContentControl 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

  1. No menu Project, clique em Add New Item.

    A caixa de diálogo Adicionar Novo Item aparece.

  2. Em o painel de Modelos , Arquivo XMLselecione.

  3. Nomeie o arquivo employees.xml, clique em Adicionar.

    O arquivo de employees.xml abre na editor de códigos.

  4. 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>
    
  5. Em Gerenciador de Soluções, clique employees.xml.

  6. 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

  1. No menu Project, clique em Add New Item.

    A caixa de diálogo Adicionar Novo Item aparece.

  2. Em o painel de Modelos , Esquema XMLselecione.

  3. Nomeie o esquema employees.xsd e clique Adicionar.

    O designer de esquema abre.

  4. Em Gerenciador de Soluções, clique com o botão direito do mouse employees.xsd, clique em Exibir Código.

  5. 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>
    
  6. 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

  1. Ativar EmployeeControls.docx no designer.

  2. Em fita, clique na guia de Desenvolvedor .

  3. Em o grupo de XML , clique Esquema.

  4. Em a caixa de diálogo de Modelos e Suplementos , clique na guia de Esquema XML , clique em Adicionar Esquema.

  5. Navegue para o esquema de employees.xsd que você criou anteriormente, que está localizado no diretório do projeto, e clique Abrir.

  6. Clique OK na caixa de diálogo de Configurações do Esquema .

  7. OK Clique em para fechar a caixa de diálogo de Modelos e Suplementos .

    o painel de tarefas de Estrutura XML abre.

  8. 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

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse ThisDocument.cs ou ThisDocument.vb, clique em Exibir Código.

  2. 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'";
    
  3. 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;
    }
    
  4. 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

  1. Pressione F5 para executar o projeto.

  2. 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

  3. Clique na célula à direita da célula de nomes de funcionários e digite um nome diferente.

  4. Clique na célula à direita da célula da data de admissão e selecione uma data diferente no selecionador de data.

  5. Clique na célula à direita da célula de título e selecione um novo item de lista suspensa.

  6. Salve e feche o documento.

  7. Em o Arquivo Explorer, abra a pasta \ bin \ debug no local do seu projeto.

  8. Clique com o botão direito do mouse EmployeeControls.docx e clique em Renomear.

  9. 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.

  10. Clique duas vezes no arquivo de EmployeeControls.docx.zip.

  11. Clique duas vezes na pasta de customXml .

  12. 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.

  13. Verifique se name, hireDate, e os elementos de title contém os novos valores que você inseriu nos controles de conteúdo no documento.

  14. Feche o arquivo de item2.xml .

Próximas etapas

Você pode aprender mais sobre como usar controles de conteúdo de esses tópicos:

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

Controles de conteúdo

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