IQueryAmbient Rozhraní
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Dotazuje se, zda má být zadaná vlastnost v aktuálním oboru považována za okolí.
public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
- Odvozené
Poznámky
Účelem mechanismu vlastností okolí je zlepšit dobu analýzy tím, že informuje zapisovač objektů XAML, aby se zabránilo vytváření instancí určitých objektů, v případech, kdy je známo, že objekty jsou pro hodnoty, které jsou dočasné a nejsou užitečné pro typickou aplikaci za běhu. Za normálních okolností by vyhledávání XAML nebo zpracování objektu get vlastnosti GET potřebovalo vytvořit instanci takových objektů, aby se v grafu objektu vyplnily hodnoty připravené k použití.
IQueryAmbient má jednoho člena: IsAmbientPropertyAvailable.
IQueryAmbient je paralelní mechanismus k AmbientAttribute.
IQueryAmbient je specializovaný mechanismus, který zabraňuje použití reflexe k určení informací a může také jednat situačně (daný objekt může zvolit sestavu true
nebo false
pro IsAmbientPropertyAvailable), zatímco atribut je v podstatě statická analýza).
AmbientAttribute je obecný mechanismus, který můžou používat zapisovače objektů XAML a který obvykle koreluje s vyhrazenými vlastnostmi IsAmbient systému typů XAML a IsAmbient.
Implementace WPF IQueryAmbient
Ve WPF IQueryAmbient se používá pro proces vyhledávání slovníku prostředků. Proces vyhledávání získá po sobě jdoucí Resources
hodnoty v rámci logického stromu WPF a pracuje směrem ke kořenovému adresáři oboru prostředku, dokud se nenajde klíč nebo dokud se zjistí, že klíč neexistuje v oboru. Za normálních okolností by to vyžadovalo vytvoření ResourceDictionary instance pokaždé, aby se získaly výsledky. Deklarování obsahu Resources
tak dlouho, dokud Resources
existuje, optimalizuje tento proces vyhledávání. Ve WPF je toto rozhraní implementováno v následujících případech:
FrameworkElement Implement vrátí IQueryAmbient.IsAmbientPropertyAvailable
true
pro všechny názvy vlastností, pokud obsahuje existující ResourceDictionary pro Resources, a pokud dotaz není pro Resources samotnou vlastnost.Application implementuje stejný vzor pro svůj Resources.
FrameworkContentElement implementuje stejný vzor pro svůj Resources.
FrameworkTemplate implementuje stejný vzor pro svůj Resources. Také hlásí Template obsah jako ambientní, ale pokud
false
dotazuje sám pro Template sebe.V každém z těchto případů jsou příslušné
Resources
vlastnosti (a Template) přiřazeny jako AmbientAttribute. Typickým použitím je dotazování na vlastnosti, které NEJSOU AmbientAttribute vlastnostmi atributu objektu, který definuje rozhraní. Jinými slovy, pokud existuje slovník prostředků, který poskytuje hodnotu potenciální doby běhu při vytvoření grafu objektů, lze za okolí považovat všechny ostatní vlastnosti kromě kontejneru vlastností slovníku prostředků.
Metody
IsAmbientPropertyAvailable(String) |
Dotazuje se, zda lze zadanou pojmenovanou vlastnost považovat za okolní v aktuálním oboru. |