IAmbientProvider Interfejs
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Reprezentuje usługę, która może zwracać informacje o właściwościach otoczenia lub typach otoczenia do typów konwerterów i rozszerzeń znaczników.
public interface class IAmbientProvider
public interface IAmbientProvider
type IAmbientProvider = interface
Public Interface IAmbientProvider
Uwagi
Ten interfejs reprezentuje usługę, która może ułatwić typ konwerterów i rozszerzeń znaczników w celu uzyskania identyfikatorów właściwości otoczenia dla systemu typów XAML (XamlMember obiektów). Usługa może również uzyskać wartości właściwości otoczenia z klas. Typy mogą być również otoczenia; każdy element członkowski, który używa tego typu jako jego wartość, należy uznać za otoczenia.
Ta usługa jest zwykle zwracana za pośrednictwem wywołania elementu GetService, które jest wykonywane względem dostawcy usług specyficznego dla kontekstu. Dostawca usług jest ogólnie dostępny dla kontekstów, które go potrzebują, takich jak kod wykonywania konwertera wartości. Aby uzyskać więcej informacji, zobacz Konwertery typów i rozszerzenia znaczników dla XAML i kontekstów usługi dostępne dla konwerterów typów i rozszerzeń znaczników.
Informacje o właściwościach otoczenia
Właściwość otoczenia jest właściwością, której wartość właściwości powinna być dostępna do użycia konwertera typów i rozszerzeń znaczników, które istnieją w strukturze węzła XAML i na grafie obiektu utworzonym na jego podstawie. Jest to istotne dla procesora XAML w fazie zapisywania obiektów ścieżki ładowania lub fazy serializacji ścieżki zapisywania.
W przypadku ścieżki ładowania wartość właściwości otoczenia może mieć wpływ na wartość na wykresie obiektu innych właściwości, które istnieją pod nią w strukturze węzła XAML. W przypadku przetwarzania jako strumienia węzła XAML koncepcja otoczenia oznacza, że wartość właściwości otoczenia musi być dostępna dla konwerterów typów i rozszerzeń znaczników od StartObject
do EndObject
. Podobnie konwerter typów używany na potrzeby ścieżki zapisywania może korzystać z wiedzy o właściwości otoczenia i jego wartości. W związku z tym generowany kod XAML jest lepszą reprezentacją dwukierunkową.
W przypadku elementów członkowskich w ogóle język XAML nie określa kolejności przetwarzania elementów członkowskich obiektu. Jednak każda wartość właściwości otoczenia musi być najpierw przetworzona przez czytnik XAML, aby konwerter typów i użycie rozszerzenia znaczników zawarte w innych właściwościach mogły uzyskać do niej dostęp za pośrednictwem IAmbientProvider usługi.
DependsOn jest podobną koncepcją, która ma również wpływ na kolejność przetwarzania węzłów XAML. DependsOn Można jednak używać tylko w przypadku relacji elementów członkowskich i węzłów równorzędnych. Nie może ona mieć wpływu na wszystkie elementy podrzędne. Ponadto bezpośrednio DependsOn wpływa na ustawienie właściwości grafu obiektów; podczas gdy technika otoczenia opiera się na konwerterach typów lub rozszerzeniach znaczników. W technice otoczenia musi również istnieć określony konwerter typów lub definicja rozszerzenia znaczników, która określa sposób interpretowania i stosowania wartości właściwości otoczenia do obiektu.
Uwagi dotyczące użycia platformy WPF
Scenariusz właściwości otoczenia przedstawiony w zestawie funkcji WPF to Style.TargetType, który może kwalifikować niezbędne wyszukiwania nazw właściwości dla innych wartości. W takim przypadku Style.TargetType wartość kwalifikuje Setter.Property wartości znajdujące się w węzłach XAML poniżej. Setter.Property używa zachowania konwertera typów dla klasy DependencyProperty. To zachowanie uzyskuje dostęp do wartości otoczenia Style.TargetType przez wysyłanie zapytań GetFirstAmbientValue z kontekstu usługi, który jest dostępny do typów konwerterów i rozszerzeń znaczników.
Scenariusz typu otoczenia przedstawiony w zestawie funkcji WPF to ResourceDictionary. ResourceDictionaryMergedDictionaries ma właściwość , która może zawierać inne ResourceDictionary obiekty do scalenia, oraz planowaną kolejność rozwiązywania zasobów dla scalonego scenariusza jest sprzeczna z kolejnością ładowania typów. ResourceDictionary stosuje AmbientAttribute się tak, aby procesor XAML mógł poprawnie przetworzyć odwołania w scalanym słowniku z StaticResource
użyciem. W szczególności StaticResource
jest to rozszerzenie znaczników, które wywołuje GetAllAmbientValuesmetodę .
Metody
GetAllAmbientValues(IEnumerable<XamlType>, Boolean, IEnumerable<XamlType>, XamlMember[]) |
Zwraca wyliczany zestaw elementów informacji o właściwości otoczenia dla żądanego zestawu typów i właściwości. |
GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[]) |
Zwraca wyliczany zestaw elementów informacji o właściwości otoczenia dla żądanego zestawu właściwości. |
GetAllAmbientValues(XamlType[]) |
Zwraca wyliczany zestaw wystąpień obiektów możliwych typów otoczenia dla żądanych typów. |
GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[]) |
Zwraca pojedynczy element informacji o właściwości otoczenia z żądanego zestawu właściwości na podstawie tego, która właściwość jest napotkana po raz pierwszy. |
GetFirstAmbientValue(XamlType[]) |
Zwraca pierwszy pasujący obiekt, który jest możliwym typem otoczenia dla żądanych typów. |