Compartilhar via


Digite conversores e extensões de marcação XAML

Conversores de tipo e as extensões de marcação são duas técnicas que usam a sistemas de tipos XAML e gravadores XAML para gerar os componentes do objeto gráfico. Embora eles compartilham algumas características, conversores de tipo e as extensões de marcação são representadas diferentemente em um fluxo de nó XAML. Nesta documentação conjunto, conversores de tipo, as extensões de marcação e construções semelhantes são às vezes, coletivamente denominadas conversores de valor.

Este tópico contém as seguintes seções.

  • Value Converters
  • Conversores de tipo
  • Markup Extensions
  • Valor serializadores
  • Outros conversores de valor
  • Digite conversores e extensões de marcação em combinação
  • Contexto do serviço de um conversor de valor
  • Tópicos relacionados

Value Converters

No XAML, os conversores de valor são usados para vários cenários. A lista a seguir mostra os diferentes tipos de conversores de valor em XAML:

  • Conversor de tipo

  • Extensão de marcação

  • Serializador de valor

  • Classe relacionada ou classe de suporte que fornece a lógica de uma sintaxe de texto XAML

Conversores de tipo

No.Definição de serviços do NET Framework XAML, conversores de tipo são classes que derivam do CLR TypeConverter classe. TypeConverteré uma classe que se encontrava o Microsoft .NET Framework antes de XAML existia. Sua finalidade original era oferecer suporte a windows de propriedade e semelhantes baseado em texto edição metáforas para IDE Propriedades. A introdução do XAML para.NET Framework usa TypeConverter para converter uma sintaxe de texto (como o encontrado em um valor de atributo ou um nó de valor XAML) em um objeto. TypeConverter também pode ser usado para serializar um valor de objeto para a sintaxe de texto. TypeConvertertambém foi usado nas implementações anteriores de XAML específicos de framework em Windows Presentation Foundation (WPF) e Windows Communication Foundation (WCF). Para obter mais informações sobre o TypeConverter em XAML, consulte Conversores de tipo de visão geral do XAML.

Markup Extensions

No.Implementação de serviços de XAML do NET Framework, as extensões de marcação são classes que derivam de MarkupExtension classe. As extensões de marcação são um conceito que este formulário é originado pela linguagem XAML. Você pode pensar em uma extensão de marcação como sendo algo como uma seqüência de escape extensível que chama uma classe de serviço para fornecer a sua lógica. Em termos de marcação, processadores XAML universalmente reconhecem uma extensão de marcação por uma seqüência de texto que começa com uma chave de abertura ({}) em uma seqüência de texto.

As extensões de marcação diferem de conversores de tipo. Conversores de tipo são geralmente associados a tipos ou membros. Eles são chamados quando a criação de um gráfico de objeto ou uma serialização encontra a sintaxe de texto que está associado essas entidades.

As extensões de marcação estão associadas uma única classe de serviço de suporte, mas podem ser aplicadas para qualquer valor do membro. (No entanto, você pode implementar sua extensão de marcação para restringir deliberadamente o seu uso a determinados membros ou os tipos de destino, usando o contexto de serviço). As extensões de marcação podem substituir uma associação de tipo de conversor. Ou você pode usá-los para especificar um valor de atributo para membros que não suportaria caso contrário uma sintaxe de texto.

Para obter mais informações sobre o padrão de implementação de extensão de marcação XAML, consulte Extensões de marcação de visão geral do XAML.

Observação

O MarkupExtension e ValueSerializer tipos estão ambos na System.Windows.Markup namespace e não do System.Xaml namespace.Isso não implica que esses tipos são específicos para tanto o WPF ou Windows Forms tecnologias que preencher, caso contrário, namespaces CLR que contêm a seqüência de caracteres Windows.MarkupExtensione ValueSerializer estão no assembly System.Xaml e ter nenhuma dependência estrutura específica.Esses tipos existiam no namespace CLR para .NET Framework 3.0 e permanecem no namespace CLR em .NET Framework 4 para evitar a interrupção de referências em projetos existentes do WPF.For more information, see Tipos migradas do WPF para System.Xaml.

Valor serializadores

A ValueSerializer é um conversor de tipo especializado que é otimizado para converter um objeto em uma seqüência de caracteres. A ValueSerializer para XAML pode implementar a ConvertFrom método. A ValueSerializer implementação obtém serviços de maneira semelhante a uma TypeConverter de implementação. Os métodos virtuais fornecem uma entrada context parâmetro. O context parâmetro é do tipo IValueSerializerContext, que herda a IServiceProvider interface e tem um GetService método.

No sistema de tipos XAML e implementações de gravador XAML que utilizam o loop de nó XAML de processamento para a serialização, um conversor de valor que está associado um tipo ou membro é relatado pelo seu próprio XamlType.ValueSerializer propriedade. O significado para escritores de XAML para executar a serialização é que se um XamlType.TypeConverter e XamlType.ValueSerializer existir, o conversor de tipo deve ser usado para o caminho de carga e o serializador de valor deve ser usado para salvar Path. Se XamlType.TypeConverter existe mas XamlType.ValueSerializer é null, o conversor de tipos também é usado para salvar Path.

Outros conversores de valor

Um conversor de valor é extensível, além de padrões específicos de um conversor de tipo ou a extensão de marcação. No entanto, essa personalização também exigiria a redefinição do sistema de tipo XAML conforme fornecido pela.NET Framework serviços XAML. O sistema de tipos XAML existente tem representações e sistemas de relatório para conversores de tipo, as extensões de marcação e serializadores do valor, mas não para formulários personalizados de conversão do valor. Se você deseja criar os conversores de valor personalizado, use o XamlValueConverter<TConverterBase> tipo.

Digite conversores e extensões de marcação em combinação

Conversores de tipo e extensões de marcação são usados para diferentes situações no XAML. Embora o contexto está disponível para usos da extensão de marcação, comportamento de conversão de tipo de propriedades onde uma extensão de marcação fornece que um valor é geralmente não é verificado as implementações de extensão de marcação. Em outras palavras, mesmo se a extensão de marcação retorna uma seqüência de texto como seu ProvideValue de saída, o comportamento de conversão de tipo nessa cadeia de caracteres como aplicado a uma propriedade específica ou um tipo de valor da propriedade não é invocado. Geralmente, o propósito de uma extensão de marcação é uma seqüência de caracteres de processo e retornar um objeto sem qualquer conversor de tipos envolvidos.

Contexto do serviço de um conversor de valor

Quando você implementa um conversor de valor, você freqüentemente precisa de acesso a um contexto no qual o conversor de valor é aplicado. Nesse contexto é conhecido como o contexto do serviço. O contexto de serviço pode incluir informações como, por exemplo, o contexto de esquema ativa do XAML, acesso ao sistema de mapeamento de tipo que o contexto de esquema XAML e o gravador de objeto XAML fornecem e assim por diante. Para obter mais informações sobre os contextos de serviço disponíveis para um conversor de valor e como acessar os serviços que pode fornecer o contexto de um serviço, consulte Contextos de serviço disponíveis para digitar os conversores e extensões de marcação.

Consulte também

Referência

MarkupExtension

XamlObjectWriter

Outros recursos

Extensões de marcação de visão geral do XAML

Conversores de tipo de visão geral do XAML

Contextos de serviço disponíveis para digitar os conversores e extensões de marcação