IQueryAmbient Interfaccia

Definizione

Esegue una query per determinare se una proprietà specificata deve essere considerata di ambiente nell'ambito corrente.

public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
Derivato

Commenti

Lo scopo di un meccanismo di proprietà di ambiente è quello di migliorare il tempo di analisi informando un writer di oggetti XAML per evitare di creare istanze di determinati oggetti, nei casi in cui è noto che gli oggetti sono per valori temporanei e non utili per una tipica applicazione in fase di esecuzione. In genere, le ricerche XAML o l'elaborazione XAML di una funzione di accesso get di proprietà devono creare un'istanza di tali oggetti per riempire la rappresentazione dell'oggetto grafico con valori pronti per l'uso.

IQueryAmbient ha un membro: IsAmbientPropertyAvailable.

IQueryAmbient è un meccanismo parallelo a AmbientAttribute. IQueryAmbient è il meccanismo specializzato che evita l'uso della reflection per determinare le informazioni e può anche agire in modo situazione (un determinato oggetto può scegliere di segnalare true o false per IsAmbientPropertyAvailable), mentre l'attributo è essenzialmente un'analisi statica. AmbientAttribute è il meccanismo generale che può essere usato dai writer di oggetti XAML e che in genere è correlato alle proprietà IsAmbient del sistema di tipi XAML dedicate e IsAmbient.

Implementazioni WPF di IQueryAmbient

In WPF IQueryAmbient viene usato per il processo di ricerca del dizionario risorse. Il processo di ricerca ottiene valori successivi Resources nell'albero logico WPF, lavorando verso la radice dell'ambito della risorsa fino a quando non viene trovata una chiave o la chiave non esiste nell'ambito. In genere, questa operazione richiederebbe la creazione di un'istanza di ogni ResourceDictionary volta per ricevere i risultati. La dichiarazione del contenuto di Resources come ambiente, purché Resources esista, ottimizza questo processo di ricerca. In WPF questa interfaccia viene implementata nei casi seguenti:

  • FrameworkElement implementa IQueryAmbient.IsAmbientPropertyAvailable per restituire true per tutti i nomi di proprietà se contiene un oggetto esistente ResourceDictionary per Resourcese, purché la query non sia relativa alla Resources proprietà stessa.

  • Style implementa lo stesso modello per il relativo Resourcesoggetto .

  • Application implementa lo stesso modello per il relativo Resourcesoggetto .

  • FrameworkContentElement implementa lo stesso modello per il relativo Resourcesoggetto .

  • FrameworkTemplate implementa lo stesso modello per il relativo Resourcesoggetto . Segnala anche Template il contenuto come ambiente, ma restituisce false se l'esecuzione di query per Template se stessa.

  • In ognuno di questi casi, la proprietà pertinente Resources (e Template) sono attribuite come AmbientAttribute. L'utilizzo tipico consiste nell'eseguire una query per le proprietà che NON sono le AmbientAttribute proprietà con attributi dell'oggetto che definisce l'interfaccia. In altre parole, purché esista un dizionario risorse per fornire il potenziale valore di runtime al momento della creazione del grafico dell'oggetto, qualsiasi altra proprietà oltre al contenitore di proprietà del dizionario risorse può essere considerata come ambiente.

Metodi

IsAmbientPropertyAvailable(String)

Esegue una query per determinare se una proprietà denominata specificata può essere considerata di ambiente nell'ambito corrente.

Si applica a

Vedi anche