IAmbientProvider Interface

Definição

Representa um serviço que pode retornar itens de informações sobre propriedades de ambiente ou tipos de ambiente para conversores de tipo e extensões de marcação.

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

Comentários

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

Normalmente, esse serviço é retornado por meio de uma chamada para GetService, que é feita em um provedor de serviços específico de contexto. O provedor de serviços geralmente está disponível para contextos que precisam dele, como o código de execução de um conversor de valor. Para obter mais informações, consulte Conversores de tipo e extensões de marcação para XAML e Contextos de serviço disponíveis para conversores de tipo e extensões de marcação.

Sobre propriedades de ambiente

Uma propriedade ambiente é uma propriedade cujo valor de propriedade deve estar disponível para usos de extensão de conversor de tipo e marcação que existem na estrutura do nó XAML e no grafo de objeto criado a partir dela. Isso é relevante para um processador XAML durante a fase de gravação de objeto do caminho de carga ou a fase de serialização de um caminho de salvamento.

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

Para membros em geral, o XAML não especifica a ordem na qual 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 de conversor de tipo e extensão de marcação contidos em outras propriedades possam acessá-lo por meio do IAmbientProvider serviço.

DependsOn é um conceito semelhante que também influencia a ordem de processamento de nó XAML. No entanto, DependsOn só pode ser usado para relações de membro par e nó; ele não pode influenciar todos os descendentes. Além disso, DependsOn influencia diretamente a configuração da propriedade do grafo de objeto; enquanto a técnica de ambiente depende de conversores de tipo ou extensões de marcação. Na técnica de ambiente, também deve haver um conversor de tipo específico ou definição de 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 recursos do WPF é Style.TargetType, que pode qualificar as pesquisas de nome de propriedade necessárias para outros valores. Nesse caso, o Style.TargetType valor qualifica os Setter.Property valores localizados nos nós XAML abaixo dele. Setter.Property usa o comportamento do conversor de tipo para um DependencyProperty. Esse comportamento acessa o valor de ambiente Style.TargetType consultando GetFirstAmbientValue de um contexto de serviço que está disponível para conversores de tipo e extensões de marcação.

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

Métodos

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

Retorna um conjunto enumerável de itens de informações de propriedade de ambiente para o conjunto solicitado de tipos e propriedades.

GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[])

Retorna um conjunto enumerável de itens de informações de propriedade de ambiente para o conjunto solicitado de propriedades.

GetAllAmbientValues(XamlType[])

Retorna um conjunto enumerável de instâncias de objeto de possíveis tipos de ambiente para tipos solicitados.

GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[])

Retorna um único item de informações de propriedade de ambiente do conjunto solicitado de propriedades, com base em qual propriedade é encontrada pela primeira.

GetFirstAmbientValue(XamlType[])

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

Aplica-se a

Confira também