Compartilhar via


Demonstra Passo a passo: Controles de conteúdo ligação Personalizar XML Parts

Se aplica a

As informações contidas neste tópico se aplicam apenas às especificado Ferramentas do Visual Studio para o Office projetos e as versões do Microsoft Office.

Tipo de Projeto

  • Projetos de nível de documento

Versão do Microsoft Office

  • Word 2007

For more information, see Recursos disponíveis pelo aplicativo e o tipo de projeto.

Esta explicação passo a passo demonstra como Ligar controles de conteúdo em uma personalização de nível de documento do Word 2007 a dados XML que são armazenadas no documento.

Word 2007 permite que você armazene dados XML, chamados Personalizar XML partes, em um documento.Você pode controlar a Exibir desse dados vinculando controles de conteúdo a elementos em uma parte XML Personalizar.O documento de exemplo nesta explicação passo a passo exibe informações do funcionário que são armazenadas em uma parte XML Personalizar.Quando você abre o documento, o conteúdo controla Exibir os valores dos elementos XML.Todas as alterações feitas nos controles de conteúdo texto são salvas na parte XML Personalizar.

Essa explicação passo a passo ilustra as seguintes tarefas:

  • Adicionar controles de conteúdo para o documento do Word em um projeto de nível de documento no tempo de design.

  • Criando um arquivo de dados XML e um esquema XML que define os elementos para se ligarem os controles de conteúdo.

  • Anexar o esquema XML para o documento em tempo de design.

  • Adicionar o conteúdo do arquivo XML a uma parte XML Personalizar no documento em tempo de execução.

  • Vincular os controles de conteúdo aos elementos a parte XML Personalizar.

  • Vinculando um DropDownListContentControl a um conjunto de valores que são definidos no esquema XML.

Observação:

Seu computador pode mostrar diferentes nomes ou localizações para alguns dos elementos de 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

Para completar este passo a passo, são necessários os seguintes componentes:

  • Ferramentas do Visual Studio para o Office (um componente opcional do O Visual Studio 2008 Professional e Visual Studio Team System).

  • Microsoft Office Word 2007.

Ferramentas do Visual Studio para o Office é instalado por padrão com as versões listadas do Visual Studio.Para Marcar se ele está instalado, Marcar Instalando o Visual Studio Tools para Office.

Criando um novo projeto de documento do Word

Criar um documento do Word 2007 que você usará na explicação passo a passo.

Para criar um novo projeto de documento do Word 2007

  • Criar um projeto de documento do Word com o nome EmployeeControls, usando o documento do Word Modelo de projeto para o Microsoft Office Sistema de 2007.Criar um novo documento para a solução.For more information, see Como: Criar o Visual Studio Tools para projetos do Office.

    Visual Studio abre o novo documento do Word no designer e o adiciona o projeto EmployeeControls Gerenciador de Soluções.

Adicionando controles de conteúdo para o 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 ao documento

  1. No documento do Word que está hospedado no designer Visual Studio , na faixa de opções, clique na guia de De inserir.

  2. No AAgruparar tabelas, clique em Tabela; inserir uma tabela com colunas de 2 e 3 linhas.

  3. tipo texto na Primeiro coluna para que ele é semelhante a coluna a seguir:

    Nome do funcionário

    Data de contratação

    Title

  4. In the segundo coluna da tabela, clique na Primeiro linha (Avançar ao Nome do funcionário).

  5. Na faixa de opções, clique na guia de De desenvolvedor.

    Observação:

    Se a Guia do desenvolvedor não estiver visível, você primeiro deve mostrá-lo.For more information, see Como: Mostrar a guia Desenvolvedor na Faixa de Opções.

  6. No AAgruparar de De controles, clique em Texto botão para adicionar um PlainTextContentControl à Primeiro célula.

  7. Na segunda coluna da tabela, clique na segunda linha (Avançar para Data de contratação).

  8. No AAgruparar de De controles de , clique em Selecionador de data botão para adicionar um DatePickerContentControl para o segundo célula.

  9. In the segundo coluna da tabela, clique na terceira linha (Avançar ao Título).

  10. No AAgruparar controles, clique em Soltar - Para Baixo lista botão para adicionar um DropDownListContentControl para Último célula.

Que é a interface de usuário inteira para este projeto.Se você executar o projeto agora, você pode digitar texto na Primeiro linha e Selecionar uma data in the segundo linha.A Avançar etapa é anexar os dados que você deseja exibir para o documento em um arquivo XML.

Criando o arquivo de dados XML

Normalmente, você obterá dados XML para armazenar em uma parte XML Personalizar de um Externo Origem, como um arquivo ou um banco de dados.Esta explicação passo a passo, você criar um arquivo XML que contém os dados funcionário, marcados por elementos que você irá Ligar para os controles de conteúdo no documento.Para disponibilizar os dados em tempo de execução, incorporar 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.

    O Adicionar Novo Item caixa de diálogo é exibida.

  2. No painel modelos, Selecionar do arquivo XML.

  3. Nomeie o arquivo employees.xmle clique em Adicionar.

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

  4. Substituir o conteúdo do arquivo 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 em employees.xml.

  6. Na janela Propriedades , Selecionar a propriedade de ComCompilação Ação, e, em seguida, Alterar o valor a ser Embedded recurso.

    Esta etapa incorpora o arquivo XML como um recurso no assembly quando você Compilação o projeto.Isso permite que você acessar o conteúdo do arquivo XML em tempo de execução.

Criação de um esquema XML

Se você desejar ligar um Controlarar de conteúdo a um Simples elemento em uma parte XML Personalizar, você não precisará usar um esquema XML.No entanto, para Ligar a 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 title.Você irá Ligar o DropDownListContentControl a esse elemento posteriormente nesta explicação passo a passo.

Para criar um esquema XML

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

    O Adicionar Novo Item caixa de diálogo é exibida.

  2. No painel modelos, Selecionar Esquema XML.

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

    O designer de esquema é aberto.

  4. Em Gerenciador de Soluções, clique com o botão direito do mouse employees.xsde clique em Exibir Code.

  5. Substituir o conteúdo do arquivo employees.xsd com o seguinte esquema.

    <?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. No menu arquivo, clique em Salvar tudo para salvar as alterações na de employees.xml e os arquivos de employees.xsd.

Anexar o esquema XML ao documento

Você deve anexar o esquema XML ao documento para ligar os valores válidos de um elemento DropDownListContentControl a title.

Para anexar o esquema XML a do documento

  1. Ativar EmployeeControls.docx no designer.

  2. Na faixa de opções, clique na guia de De desenvolvedor.

  3. No AAgruparar de De XML, clique em Esquema.

  4. Na caixa de diálogo do Add-ins E Modelos, clique na guia de esquema XML e clique em Adicionar esquema.

  5. Procurar ao employees.xsd esquema criado anteriormente, que está localizado no seu Diretório do Projeto e clique em Abrir.

  6. Clique em OK na caixa de diálogo Definições de esquema.

  7. Clique em OK para fechar a Modelos e a caixa de diálogo de Adicionar-ins.

    O painel de tarefas de estrutura XML é aberto.

  8. Fechar o painel de tarefas de estrutura XML.

Adicionar uma Part XML de Personalizar para o documento

Antes de você pode Ligar os controles de conteúdo para os elementos no arquivo XML, você deve adicionar o conteúdo do arquivo XML a uma parte XML Personalizar e Novo no documento.

Para adicionar uma parte XML Personalizar o documento

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse ThisDocument.cs ou ThisDocument.vbe clique em Exibir Code.

  2. Adicionar as seguintes declarações para a classe ThisDocument.Esse código declara vários objetos que você serão usados para adicionar uma parte XML Personalizar ao 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. Adicionar o seguinte método à classe ThisDocument.Esse método obtém o conteúdo do arquivo de dados XML que é incorporado como um recurso no assembly e retorna o conteúdo como uma cadeia de caracteres 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. Adicionar o seguinte método à classe ThisDocument.O método AddCustomXmlPart cria uma parte XML Personalizar Novo que contém uma Cadeia de Caracteres XML que é passada para o método.

    Para garantir que a parte XML Personalizar é criado apenas uma vez, o método cria o XML Personalizar parte somente se uma parte XML Personalizar com um GUID correspondente ainda não existe no documento.A Primeiro vez que esse método é chamado, ele salva o valor da propriedade Microsoft.Office.Interop.Word.CustomXMLPart.Id à cadeia de caracteres employeeXMLPartID.O valor da Cadeia de Caracteres employeeXMLPartID é mantido no documento porque ele foi declarado usando o atributo 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, missing);
                employeeXMLPart.NamespaceManager.AddNamespace("ns", 
                    @"https://schemas.microsoft.com/vsto/samples");
                employeeXMLPartID = employeeXMLPart.Id;
            }
        }
    }
    

Vinculando os controles de conteúdo a elementos em Part de XML Personalizar

Ligar Cada Controlarar de conteúdo a um elemento na parte XML Personalizar usando a propriedade XMLMapping de cada Controlarar de conteúdo.

Para Ligar os controles de conteúdo a elementos na parte XML Personalizar

  • Adicionar o seguinte método à classe ThisDocument.Este método vincula cada Controlarar de conteúdo a um elemento na parte XML Personalizar e define o Formatarar de Exibir de data do 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 é aberto

Criar a parte XML Personalizar e Ligar os controles Personalizars para os dados quando o documento for aberto.

Para executar seu código quando o documento é aberto

  • Adicionar o seguinte código para o método ThisDocument_Startup da classe ThisDocument.Esse código obtém a cadeia de caracteres de XML do arquivo employees.xml, adiciona a cadeia de caracteres de XML a uma Novo parte XML Personalizar no documento e vincula os controles de conteúdo a elementos na parte XML Personalizar.

    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ê Abrir o documento, o conteúdo controla os dados de Exibir de elementos da parte XML Personalizar.Você pode Clique o DropDownListContentControl para selecionar um dos três valores válidos para o elemento de title , que são definidos no arquivo employees.xsd.Se você editar os dados em qualquer um dos controles de conteúdo, os novos valores serão salvos na parte XML Personalizar no documento.

Para testar os controles de conteúdo

  1. Pressione F5 para executar o projeto.

  2. Verifique se que a tabela do documento se assemelha a tabela a seguir.Cada uma das cadeias de caracteres no segundo coluna é obtida de um elemento na parte XML Personalizar no documento.

    Nome do funcionário

    Karina Leal

    Data de contratação

    01.04.99

    Title

    Gerente

  3. Clique na célula Direito da célula de nome do funcionário e tipo um nome diferente.

  4. Clique na célula Direito da célula Data de contratação e Selecionar uma data diferente no selecionador de data.

  5. Clique na célula para a Direito da célula título e Selecionar um novo item de a lista Soltar-Para Baixo.

  6. Salvar e Fechar o documento.

  7. No Windows Explorer, Abrir a pasta \bin\Depurar no local do projeto.

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

  9. O nome do arquivo EmployeeControls.docx.zip.

    O documento EmployeeControls.docx é salvo no Abrir XML Formatar.Renomeando este documento com a extensão de Nome do Arquivo .zip, você pode examinar o conteúdo do documento.Para obter mais informações sobre Abrir XML, consulte o artigo técnico apresentando o XML de Abrir formatos de arquivo.

  10. Clique Duplo no arquivo EmployeeControls.docx.zip.

  11. Clique Duplo na pasta de customXml.

  12. Clique com o botão direito do mouse item2.xml e clique em Abrir do .

    Este arquivo contém Personalizar parte XML que você Adicionado ao documento.

  13. Verifique se a name, hireDatee title elementos contêm os novos valores que você inseridos em controles de conteúdo no documento.

  14. Fechar o arquivo de item2.xml.

Próximas etapas

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

Consulte também

Tarefas

Como: Adicionar controles de conteúdo a documentos do Word

Como: Proteger partes de documentos, usando controles de conteúdo

Conceitos

Os controles de conteúdo

Itens de host e Visão geral sobre controles de host

Limitações através de programação de itens de host e controles de host

Adicionar controles a documentos do Office em tempo de execução

Métodos de auxiliar para controles de host

Outros recursos

Controles de host do Word