IQueryAmbient Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Consulta se uma propriedade especificada deve ser tratada como ambiente no escopo atual.
public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
- Derivado
Comentários
A finalidade de um mecanismo de propriedade de ambiente é melhorar o tempo de análise informando um gravador de objeto XAML para evitar a instanciação de determinados objetos, nos casos em que se sabe que os objetos são para valores temporários e não úteis para um aplicativo de tempo de execução típico. Normalmente, pesquisas XAML ou processamento XAML de um acessador get de propriedade precisariam criar uma instância desses objetos para preencher a representação do grafo de objeto com valores prontos para uso.
IQueryAmbient tem um membro: IsAmbientPropertyAvailable.
IQueryAmbient é um mecanismo paralelo para AmbientAttribute.
IQueryAmbient é o mecanismo especializado que evita o uso da reflexão para determinar informações e também pode agir situacionalmente (um determinado objeto pode optar por relatar true
ou false
para IsAmbientPropertyAvailable), enquanto o atributo é essencialmente análise estática).
AmbientAttribute é o mecanismo geral que pode ser usado por gravadores de objetos XAML e que normalmente se correlaciona com as propriedades IsAmbient do sistema de tipo XAML dedicadas e IsAmbient.
Implementações do WPF de IQueryAmbient
No WPF, IQueryAmbient é usado para o processo de pesquisa do dicionário de recursos. O processo de pesquisa obtém valores sucessivos Resources
em toda a árvore lógica do WPF, trabalhando em direção à raiz do escopo do recurso até que uma chave seja encontrada ou a chave seja determinada como não existir no escopo. Normalmente, fazer isso exigiria uma instanciação de cada ResourceDictionary vez para receber os resultados. Declarar o conteúdo de Resources
como ambiente desde Resources
que exista otimiza esse processo de pesquisa. No WPF, essa interface é implementada nos seguintes casos:
FrameworkElement IQueryAmbient.IsAmbientPropertyAvailable implementa para retornar
true
para todos os nomes de propriedade se ele contiver um existente ResourceDictionary para Resourcese, desde que a consulta não seja para a Resources propriedade em si.Application implementa o mesmo padrão para seu Resources.
FrameworkContentElement implementa o mesmo padrão para seu Resources.
FrameworkTemplate implementa o mesmo padrão para seu Resources. Ele também relata Template o conteúdo como ambiente, mas retorna
false
se estiver consultando por Template si mesmo.Em cada um desses casos, a propriedade relevante
Resources
(e Template) são atribuídas como AmbientAttribute. O uso típico é consultar as propriedades que NÃO são as AmbientAttribute propriedades atribuídas do objeto que define a interface. Em outras palavras, desde que exista um dicionário de recursos para fornecer o valor de tempo de execução potencial quando o grafo de objeto for criado, qualquer outra propriedade além do contêiner de propriedade do dicionário de recursos pode ser tratada como ambiente.
Métodos
IsAmbientPropertyAvailable(String) |
Consulta se uma propriedade nomeada especificada pode ser considerada ambiente no escopo atual. |