IAmbientProvider 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í.
Představuje službu, která může vracet informace o okolních vlastnostech nebo okolních typech pro převaděče typů a rozšíření značek.
public interface class IAmbientProvider
public interface IAmbientProvider
type IAmbientProvider = interface
Public Interface IAmbientProvider
Poznámky
Toto rozhraní představuje službu, která může pomoct s převaděči typů a rozšíření značek získat identifikátory okolní vlastnosti pro systém typů XAML (XamlMember objekty). Služba může také získat hodnoty okolní vlastnosti z tříd. Typy mohou být také okolí; každý člen, který používá tento typ jako jeho hodnotu, by měl být považován za okolí.
Tato služba se obvykle vrací voláním GetService, které se provádí vůči poskytovateli služeb specifickému pro kontext. Poskytovatel služeb je obecně dostupný pro kontexty, které ho potřebují, například kód spuštění převaděče hodnot. Další informace naleznete v tématu Převaděče typů a rozšíření značek pro KONTEXTy XAML a služby dostupné pro převaděče typů a rozšíření značek.
O okolních vlastnostech
Okolí vlastnost je vlastnost, jejíž hodnota vlastnosti by měla být k dispozici pro použití převaděče typů a rozšíření značek, které existují ve struktuře uzlu XAML a v objektovém grafu vytvořeném z něj. To je relevantní pro procesor XAML během fáze zápisu objektu cesty načtení nebo fáze serializace cesty uložení.
V případě cesty načtení může hodnota okolní vlastnosti ovlivnit hodnotu v grafu objektů jiných vlastností, které pod ní existují ve struktuře uzlu XAML. Při zpracování jako datového proudu uzlu XAML znamená okolní koncept, že hodnota okolní vlastnosti musí být k dispozici pro převaděče typů a rozšíření značek do StartObjectEndObject. Podobně může převaděč typů, který se používá pro cestu uložení, používat znalosti okolí vlastnosti a jeho hodnoty. Proto je produkovaný XAML lepší reprezentací odezvy.
Obecně platí, že XAML nezadává pořadí, ve kterém musí být členové objektu zpracovány. Jakákoli hodnota okolní vlastnosti však musí být zpracována nejprve čtenářEM XAML, aby k němu prostřednictvím služby mohl přistupovat IAmbientProvider převaděč typů a rozšíření značek, které jsou obsaženy v jiných vlastnostech.
DependsOn je podobný koncept, který také ovlivňuje pořadí zpracování uzlů XAML. DependsOn Lze však použít pouze pro vztahy mezi členy partnerského vztahu a uzly. Nemůže ovlivnit všechny potomky. DependsOn Také přímo ovlivňuje nastavení vlastností objektového grafu; zatímco okolní technika spoléhá na převaděče typů nebo rozšíření značek. V okolí techniky musí být také konkrétní typ převaděč nebo definice rozšíření značek, která určuje, jak má být okolní hodnota vlastnosti interpretována a použita na objekt.
Poznámky k využití WPF
Scénář okolní vlastnosti, který je znázorněn v sadě funkcí WPF je Style.TargetType, který může opravovat potřebné vyhledávání názvu vlastnosti pro jiné hodnoty. V tomto případě Style.TargetType tato hodnota kvalifikuje Setter.Property hodnoty umístěné v uzlech XAML pod ní. Setter.Propertypoužívá chování převaděče typů pro .DependencyProperty Toto chování přistupuje k okolí Style.TargetType hodnoty dotazováním GetFirstAmbientValue z kontextu služby, který je k dispozici pro převaděče typů a rozšíření značek.
Scénář okolního typu, který je znázorněn v sadě funkcí WPF je ResourceDictionary.
ResourceDictionary
MergedDictionaries má vlastnost, která může obsahovat další ResourceDictionary objekty ke sloučení, a zamýšlené pořadí řešení prostředků pro sloučený scénář koliduje s pořadím, které jsou načteny typy.
ResourceDictionary použije AmbientAttribute k tomu, aby procesor XAML mohl správně zpracovat odkazy ve sloučeného slovníku s StaticResource využitím. Konkrétně je StaticResource rozšíření značek, které volá GetAllAmbientValues.
Metody
| Name | Description |
|---|---|
| GetAllAmbientValues(IEnumerable<XamlType>, Boolean, IEnumerable<XamlType>, XamlMember[]) |
Vrátí enumerable množinu okolních vlastností položky informací o požadované sadě typů a vlastností. |
| GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[]) |
Vrátí enumerable množinu okolních vlastností informace položky pro požadovanou sadu vlastností. |
| GetAllAmbientValues(XamlType[]) |
Vrátí výčet množiny objektů instancí možných okolních typů požadovaných typů. |
| GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[]) |
Vrátí jednu položku informací o okolní vlastnosti z požadované sady vlastností na základě toho, která vlastnost je poprvé zjištěna. |
| GetFirstAmbientValue(XamlType[]) |
Vrátí první odpovídající objekt, který je možným okolním typem požadovaných typů. |