IQueryAmbient Schnittstelle

Definition

Fragt ab, ob eine angegebene Eigenschaft im aktuellen Bereich als Ambient-Eigenschaft behandelt werden soll.

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

Hinweise

Der Zweck eines Umgebungseigenschaftsmechanismus besteht darin, die Analysezeit zu verbessern, indem ein XAML-Objektschreiber informiert wird, um die Instanziierung bestimmter Objekte zu vermeiden, in Fällen, in denen bekannt ist, dass die Objekte für Werte gelten, die vorübergehend sind und für eine typische Laufzeitanwendung nicht nützlich sind. Normalerweise müssen XAML-Lookups oder XAML-Verarbeitung eines Eigenschafts-Get-Accessors solche Objekte instanziieren, um die Objektdiagrammdarstellung mit sofort einsatzbereiten Werten zu füllen.

IQueryAmbient verfügt über ein Element: IsAmbientPropertyAvailable.

IQueryAmbient ist ein paralleler Mechanismus zu AmbientAttribute. IQueryAmbient ist der spezialisierte Mechanismus, der die Verwendung von Reflektion zur Ermittlung von Informationen vermeidet und auch situationsgesteuert handeln kann (ein bestimmtes Objekt kann sich für oder truefalse für IsAmbientPropertyAvailableentscheiden), während das Attribut im Wesentlichen statische Analyse ist. AmbientAttribute ist der allgemeine Mechanismus, der von XAML-Objektschreibern verwendet werden kann und in der Regel mit den systemeigenschaften IsAmbient des dedizierten XAML-Typs und IsAmbientkorreliert.

WPF-Implementierungen von IQueryAmbient

In WPF IQueryAmbient wird für den Ressourcenwörterbuchsucheprozess verwendet. Der Nachschlageprozess ruft in der logischen WPF-Struktur aufeinanderfolgende Resources Werte ab, bis entweder ein Schlüssel gefunden wird oder der Schlüssel nicht im Bereich vorhanden ist. Normalerweise erfordert dies jedes Mal eine Instanziierung, ResourceDictionary um die Ergebnisse zu erhalten. Das Deklarieren des Inhalts von Resources als ambient, solange vorhanden ist Resources , optimiert diesen Nachschlageprozess. In WPF wird diese Schnittstelle in den folgenden Fällen implementiert:

  • FrameworkElementIQueryAmbient.IsAmbientPropertyAvailable implementiert, um für alle Eigenschaftennamen zurückzugebentrue, wenn er einen für ResourcesResourceDictionary enthält, und solange die Abfrage nicht für die Resources Eigenschaft selbst ist.

  • Style implementiert das gleiche Muster für seine Resources.

  • Application implementiert das gleiche Muster für seine Resources.

  • FrameworkContentElement implementiert das gleiche Muster für seine Resources.

  • FrameworkTemplate implementiert das gleiche Muster für seine Resources. Es meldet Template auch Inhalte als Umgebung, gibt aber zurück false , wenn sie für Template sich selbst abfragt.

  • In jedem dieser Fälle werden die relevanten Resources Eigenschaften (und Template) als AmbientAttributezugeordnet. Die typische Verwendung besteht darin, die Eigenschaften abzufragen, die NICHT die AmbientAttribute attributierten Eigenschaften des Objekts sind, das die Schnittstelle definiert. Anders ausgedrückt: Solange ein Ressourcenwörterbuch vorhanden ist, um den potenziellen Laufzeitwert bereitzustellen, wenn das Objektdiagramm erstellt wird, kann jede andere Eigenschaft neben dem Eigenschaftencontainer des Ressourcenwörterbuchs als Umgebung behandelt werden.

Methoden

IsAmbientPropertyAvailable(String)

Fragt ab, ob eine angegebene benannte Eigenschaft im aktuellen Bereich als Ambient betrachtet werden kann.

Gilt für:

Weitere Informationen