IAmbientProvider Interface

Definição

Representa um serviço que pode devolver itens de informação sobre propriedades ambientais ou tipos ambientes para conversores de tipos e extensões de marcação.

public interface class IAmbientProvider
public interface IAmbientProvider
type IAmbientProvider = interface
Public Interface IAmbientProvider

Observações

Esta interface representa o serviço que pode ajudar conversores de tipos e extensões de marcação para obter os identificadores de propriedades ambientais para o sistema de tipos XAML (XamlMember objetos). O serviço também pode obter os valores das propriedades ambientes das classes. Os tipos também podem ser ambientes; Qualquer membro que use esse tipo como valor deve ser considerado ambiente.

Este serviço é normalmente devolvido através de uma chamada para GetService, que é feita contra um fornecedor de serviço específico do contexto. O fornecedor de serviços está geralmente disponível para contextos que o necessitam, como o código de execução de um conversor de valor. Para mais informações, consulte Conversores de Tipos e Extensões de Marcação para XAMLe Contextos de Serviço Disponíveis para Conversores de Tipos e Extensões de Marcação.

Sobre as Propriedades Ambientais

Uma propriedade ambiente é uma propriedade cujo valor de propriedade deve estar disponível para os usos de conversores de tipos e extensões de marcação que existem na estrutura de nó XAML e no grafo objeto criado a partir dela. Isto é relevante para um processador XAML durante a fase de escrita de objetos do caminho de carregamento ou a fase de serialização de um caminho de gravação.

No caso do caminho de carga, o valor da propriedade ambiente pode influenciar o valor no grafo objeto de outras propriedades que existem por baixo dele numa estrutura de nó XAML. Quando processado como um fluxo de nó XAML, o conceito ambiente significa que o valor da propriedade ambiente deve estar disponível para conversores de tipos e extensões de marcação de StartObject para EndObject. De forma semelhante, um conversor de tipos usado para o caminho de gravação pode usar o conhecimento da propriedade ambiente e do seu valor. Portanto, o XAML produzido é uma melhor representação de ida e volta.

Para os membros em geral, o XAML não especifica a ordem em que os membros de um objeto devem ser processados. No entanto, qualquer valor de propriedade ambiente deve ser processado primeiro pelo leitor XAML para que os usos do conversor de tipos e das extensões de marcação contidos noutras propriedades possam aceder a ele através do IAmbientProvider serviço.

DependsOn é um conceito semelhante que também influencia a ordem do processamento dos nós XAML. No entanto, DependsOn só pode ser usado para relações entre membros e nós entre pares; não pode influenciar todos os descendentes. Além disso, DependsOn influencia diretamente a definição de propriedades do grafo de objetos; enquanto a técnica ambiente depende de conversores de tipos ou extensões de marcação. Na técnica ambiente, deve também existir uma definição específica de conversor de tipos ou extensão de marcação que especifique como o valor da propriedade ambiente deve ser interpretado e aplicado ao objeto.

Notas de uso do WPF

Um cenário de propriedade ambiente ilustrado no conjunto de funcionalidades WPF é Style.TargetType, que pode qualificar as pesquisas necessárias de nomes de propriedade para outros valores. Neste caso, o Style.TargetType valor qualifica os Setter.Property valores localizados nos nós XAML por baixo. Setter.Property usa o comportamento do conversor de tipos para um DependencyProperty. Este comportamento acede ao valor ambiente Style.TargetType consultando GetFirstAmbientValue a partir de um contexto de serviço disponível para conversores de tipos e extensões de marcação.

Um cenário de tipo ambiente ilustrado no conjunto de funcionalidades WPF é ResourceDictionary. ResourceDictionary tem uma MergedDictionaries propriedade que pode conter outros ResourceDictionary objetos a fundir, e a ordem pretendida de resolução de recursos para o cenário fundido entra em conflito com a ordem em que os tipos são carregados. ResourceDictionary aplica-se AmbientAttribute para que um processador XAML possa processar corretamente as referências num dicionário fundido com StaticResource as utilizações. Especificamente, StaticResource é uma extensão de marcação, que chama GetAllAmbientValues.

Métodos

Name Description
GetAllAmbientValues(IEnumerable<XamlType>, Boolean, IEnumerable<XamlType>, XamlMember[])

Devolve um conjunto enumerável de itens de informação de propriedades ambientais para o conjunto solicitado de tipos e propriedades.

GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[])

Devolve um conjunto enumerável de itens de informação de propriedades ambientes para o conjunto de propriedades solicitado.

GetAllAmbientValues(XamlType[])

Devolve um conjunto enumerável de instâncias de objetos com possíveis tipos ambientais para os tipos solicitados.

GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[])

Devolve um único item de informação de propriedade ambiente do conjunto de propriedades solicitado, com base em qual propriedade é encontrada pela primeira vez.

GetFirstAmbientValue(XamlType[])

Devolve o primeiro objeto correspondente que é um tipo ambiente possível para os tipos solicitados.

Aplica-se a

Ver também