Compartilhar via


Serviços XAML

Este tópico descreve os recursos da tecnologia de um conjunto conhecido como.NET Framework serviços XAML. A maioria dos serviços e APIs descritas estão localizadas no assembly System.Xaml, que é um assembly introduzido com o .NET Framework 4 conjunto de.Assemblies do NET core. Os serviços incluem as fábricas de leitores e gravadores, classes de esquema e o suporte do esquema, atribuição de classes, suporte intrínseca de linguagem XAML e outros recursos de linguagem XAML.

Sobre esta documentação

Documentação conceitual para.NET Framework XAML Services pressupõe que você tenha experiência anterior com a linguagem XAML e como ele pode se aplicar a uma estrutura específica, por exemplo Windows Presentation Foundation (WPF) ou Windows Workflow Foundation, ou uma área de recurso de tecnologia específica, por exemplo, a personalização da compilação recursos do Microsoft.Build.Framework.XamlTypes. Esta documentação não tenta explicar os conceitos básicos de XAML como uma linguagem de marcação, terminologia de sintaxe XAML ou outro material introdutório. Em vez disso, esta documentação enfoca especificamente usando o.NET Framework XAML serviços que estão habilitados na biblioteca de assembly System.Xaml. A maioria dessas APIs é cenários de integração de linguagem XAML e extensibilidade. Isso pode incluir qualquer um dos seguintes:

  • Amplia a capacidade dos leitores XAML base ou gravadores XAML (processamento de fluxo XAML nó diretamente; derivar seus próprios leitor XAML ou gravador XAML).

  • Definição de tipos personalizados utilizável de XAML que não têm dependências de estrutura específica e atribuir os tipos para transmitir sua XAML digite características do sistema.NET Framework serviços XAML.

  • Leitores XAML de hospedagem ou gravadores XAML como um componente de um aplicativo, como, por exemplo, um editor interativo para fontes de marcação XAML ou o visual designer.

  • Conversores de valor XAML de escrita (extensões de marcação; Conversores de tipo para tipos personalizados).

  • Definir um contexto de esquema personalizado XAML (usando técnicas de carregamento de assembly alternativas para fontes de tipo de backup; usando técnicas de pesquisa de tipos conhecidos em vez de sempre refletindo assemblies; usando os conceitos de assembly carregado que não usam o CLR AppDomain e seu modelo de segurança associado).

  • Estendendo o sistema de tipo base do XAML.

  • Usando o Lookup ou Invoker técnicas para influenciar o XAML digite sistema e como o tipo de backings são avaliados.

Se você estiver procurando material introdutório em XAML como um idioma, você pode tentar Visão geral do XAML (WPF). Esse tópico discute XAML para um público que há de novo para Windows Presentation Foundation (WPF) e também para usar a marcação XAML e recursos de linguagem XAML. Outro documento útil é o material introdutório a da especificação de linguagem XAML.

.NET Framework serviços XAML e System.Xaml na.Arquitetura de NET

Nas versões anteriores do Microsoft .NET Framework, suporte para recursos de linguagem XAML foi implementada por estruturas que criado em Microsoft .NET Framework (Windows Presentation Foundation (WPF), Windows Workflow Foundation e Windows Communication Foundation (WCF)) e portanto variados em seu comportamento e a API usada, dependendo da estrutura específica que você estava usando. Isso incluiu o XAML analisador e seu objeto gráfico do mecanismo de criação, intrínsecos de linguagem XAML, suporte de serialização e assim por diante.

In .NET Framework versão 4, .NET Framework XAML Services e o assembly System.Xaml definem muito o que é necessário para oferecer suporte a recursos de linguagem XAML. Isso inclui classes base para os leitores XAML e gravadores XAML. O recurso mais importante é adicionado ao.NET Framework XAML Services que não estava presente em qualquer uma das implementações específicas do framework XAML é uma representação de sistema de tipo para XAML. A representação de sistema do tipo apresenta XAML de forma orientada a objeto centros de recursos XAML sem assumir dependências de recursos específicos de estruturas.

O sistema de tipos XAML não é limitado pelo formulário de marcação ou especificações de tempo de execução da origem XAML; nem é limitado por qualquer sistema de tipo específico de backup. O sistema de tipos XAML inclui representações de objeto para tipos, membros, contextos de esquema XAML, conceitos de nível de XML e outros conceitos da linguagem XAML ou intrínsecos do XAML. Usar ou ampliar o sistema de tipos XAML torna possível derivar classes como leitores XAML e gravadores XAML e estender a funcionalidade de representações de XAML para recursos específicos ativados por um framework, uma tecnologia ou um aplicativo que consome ou emite XAML. O conceito de um contexto de esquema XAML permite operações de gravação de gráfico de objeto prático da combinação de uma implementação de gravador de objeto do XAML, sistema de tipos de backup da tecnologia como comunicados através de informações de assembly no contexto e a fonte do nó XAML. Para obter mais informações sobre o conceito de esquema XAML. see Contexto de esquema XAML e o contexto de esquema do WPF XAML padrão.

Fluxos de nó XAML, XAML leitores e gravadores XAML

Para entender a função que.NET Framework XAML Services é reproduzido na relação entre o idioma XAML e tecnologias específicas que usam XAML como um idioma, é útil entender o conceito de um fluxo de nó XAML e como esse conceito das formas a API e a terminologia. O fluxo de nó XAML é um intermediário conceitual entre uma representação da linguagem XAML e o gráfico do objeto que representa o XAML ou que define.

  • Um leitor XAML é uma entidade que processa o XAML em algum formulário e produz um fluxo de nó XAML. Na API, um leitor XAML é representado pela classe base XamlReader.

  • Um gravador XAML é uma entidade que processa o fluxo de um nó XAML e produz alguma outra coisa. Na API, um gravador XAML é representado pela classe base XamlWriter.

Os dois cenários mais comuns envolvendo o XAML são carregar o XAML para criar uma instância de um gráfico de objeto e salvar um gráfico de objeto de um aplicativo ou ferramenta e produzir uma representação de XAML (normalmente no formulário de marcação salvo como arquivo de texto). Carregar o XAML e criando um gráfico de objeto é conhecida nesta documentação, como o caminho de carga. Salvar ou Serializando um gráfico de objeto existente para o XAML é freqüentemente denominado nesta documentação como salvar caminho.

O tipo mais comum de carga de caminho pode ser descrito da seguinte maneira:

  • Comece com uma representação de XAML, em formato XML codificado em UTF e salvo como um arquivo de texto.

  • Carregar esse XAML em XamlXmlReader. XamlXmlReaderé um XamlReader subclasse.

  • O resultado é um fluxo de nó XAML. Você pode acessar nós individuais do XAML nó fluxo usando XamlXmlReader / XamlReader API. A operação mais comum aqui é percorrer o fluxo de nó XAML, processamento de cada nó usando um "registro atual" metáfora.

  • Passar os nós resultantes do fluxo de nó de XAML para um XamlObjectWriter API. XamlObjectWriteré um XamlWriter subclasse.

  • O XamlObjectWriter grava um gráfico de objeto, um objeto ao mesmo tempo, de acordo com o progresso através do fluxo de origem nó XAML. Isso é feito com o auxílio de um contexto de esquema XAML e uma implementação que pode acessar os assemblies e os tipos de um sistema de tipos de backup e framework.

  • Chame Result no final do fluxo de nó de XAML para obter o objeto raiz do objeto gráfico.

O tipo mais comum de salvar o caminho pode ser descrito da seguinte maneira:

  • Inicie com o gráfico do objeto de uma hora de executar todo o aplicativo, o conteúdo de interface do usuário e o estado de tempo de execução ou em um segmento menor de representação de objeto do aplicativo geral em tempo de execução.

  • De um objeto lógico de início, como uma raiz do aplicativo ou a raiz do documento, carregar os objetos em XamlObjectReader. XamlObjectReaderé um XamlReader subclasse.

  • O resultado é um fluxo de nó XAML. Você pode acessar nós individuais do XAML nó fluxo usando XamlObjectReader e XamlReader API. A operação mais comum aqui é percorrer o fluxo de nó XAML, processamento de cada nó usando um "registro atual" metáfora.

  • Passar os nós resultantes do fluxo de nó de XAML para um XamlXmlWriter API. XamlXmlWriteré um XamlWriter subclasse.

  • O XamlXmlWriter grava o XAML em um UTF XML codificação. Você pode salvar isso como um arquivo de texto, como um fluxo ou em outros formulários.

  • Chame Flush para obter a saída final.

Para obter mais informações sobre conceitos de fluxo XAML nó, consulte Noções básicas sobre conceitos e estruturas de fluxo XAML nó.

A classe XamlServices

Nem sempre é necessário lidar com o fluxo de um nó XAML. Se desejar que um caminho de carga básica ou um basic salvar o caminho, você pode usar APIs no XamlServices classe.

  • Várias assinaturas de Load implementar um caminho de carga. Você pode carregar um arquivo ou fluxo ou pode carregar um XmlReader, TextReader ou XamlReader que quebrar seu XAML entrada carregando com APIs de. do leitor

  • Várias assinaturas de Save Salvar um gráfico de objeto e produzir saída como um fluxo de arquivo, ou XmlWriter/TextWriter instância.

  • TransformConverte a XAML vinculando um caminho de carregar e salvar o caminho como uma única operação. Um contexto de esquema diferente ou o sistema de tipos diferentes de backup pode ser usado para XamlReader e XamlWriter, que é o que influencia a como o XAML resultante é transformado.

Para obter mais informações sobre como usar XamlServices, consulte Classe de XAMLServices e o XAML básica, lendo ou gravando.

Sistema de tipos XAML

O sistema de tipos XAML fornece as APIs que são necessárias para trabalhar com um determinado nó individual de um fluxo de nó XAML.

XamlTypeé a representação de um objeto - o que você está processando entre um nó de objeto inicial e o nó de objeto final.

XamlMemberé a representação para um membro de um objeto - o que você está processando entre um nó de membro de início e fim membro.

APIs, como GetAllMembers e GetMember e DeclaringType relatar as relações entre um XamlType e XamlMember.

O comportamento padrão do sistema de tipo XAML conforme implementado pelo.NET Framework XAML Services baseia-se no common language runtime (CLR) e a análise estática de tipos CLR em assemblies usando reflexão. Portanto, para um tipo específico de CLR, a implementação padrão do sistema de tipos XAML pode expor o esquema XAML desse tipo e seus membros e relatá-lo em termos de sistema de tipos XAML. No sistema de tipos XAML padrão, o conceito de assignability de tipos é mapeado para a herança do CLR e os conceitos de instâncias, tipos de valor e assim por diante também são mapeados para os comportamentos de suporte e recursos do CLR.

Referência para os recursos de linguagem XAML

Para oferecer suporte a XAML.NET Framework XAML Services fornece uma implementação específica de conceitos da linguagem XAML conforme definido para o namespace XAML linguagem XAML. Esses são documentados como páginas de referência específica. Os recursos de idioma estão documentados da perspectiva de como esses recursos de idioma se comportam quando eles são processados por um leitor XAML ou gravador XAML que é definido pelo.NET Framework serviços XAML. For more information, see Namespace XAML (x:) Recursos da linguagem.