Condividi tramite


IAmbientProvider Interfaccia

Definizione

Rappresenta un servizio che può restituire informazioni sulle proprietà di ambiente o sui tipi di ambiente ai convertitori di tipi e alle estensioni di markup.

public interface class IAmbientProvider
public interface IAmbientProvider
type IAmbientProvider = interface
Public Interface IAmbientProvider

Commenti

Questa interfaccia rappresenta il servizio che consente ai convertitori di tipi e alle estensioni di markup di ottenere gli identificatori di proprietà di ambiente per il sistema di tipi XAML (XamlMember oggetti ). Il servizio può anche ottenere i valori delle proprietà di ambiente dalle classi. I tipi possono anche essere di ambiente; qualsiasi membro che utilizza tale tipo come valore deve essere considerato di ambiente.

Questo servizio viene in genere restituito tramite una chiamata a GetService, che viene eseguita su un provider di servizi specifico del contesto. Il provider di servizi è disponibile a livello generale per i contesti necessari, ad esempio il codice di esecuzione di un convertitore di valori. Per altre informazioni, vedi Convertitori di tipi ed estensioni di markup per contesti xaml e di servizio disponibili per convertitori di tipi ed estensioni di markup.

Informazioni sulle proprietà di ambiente

Una proprietà di ambiente è una proprietà il cui valore della proprietà deve essere disponibile per il convertitore di tipi e gli utilizzi delle estensioni di markup presenti nella struttura del nodo XAML e nel grafico oggetti creato da esso. Questo è rilevante per un processore XAML durante la fase di scrittura dell'oggetto del percorso di caricamento o la fase di serializzazione di un percorso di salvataggio.

Nel caso del percorso di caricamento, il valore della proprietà di ambiente potrebbe influenzare il valore nell'oggetto grafico di altre proprietà presenti sotto di esso in una struttura di nodi XAML. Quando viene elaborato come flusso di nodi XAML, il concetto di ambiente indica che il valore della proprietà di ambiente deve essere disponibile per convertitori di tipi ed estensioni di markup da StartObject a EndObject. Analogamente, un convertitore di tipi utilizzato per il percorso di salvataggio può usare la conoscenza della proprietà di ambiente e del relativo valore. Di conseguenza, il codice XAML prodotto è una rappresentazione di round trip migliore.

Per i membri in generale, XAML non specifica l'ordine in cui i membri di un oggetto devono essere elaborati. Tuttavia, qualsiasi valore della proprietà di ambiente deve essere elaborato prima dal lettore XAML in modo che i convertitori di tipi e gli utilizzi delle estensioni di markup contenuti in altre proprietà possano accedervi tramite il IAmbientProvider servizio.

DependsOn è un concetto simile che influenza anche l'ordine di elaborazione dei nodi XAML. Tuttavia, DependsOn può essere usato solo per le relazioni tra membri peer e nodi, ma non può influenzare tutti i discendenti. Inoltre, DependsOn influenza direttamente l'impostazione della proprietà dell'oggetto grafico, mentre la tecnica di ambiente si basa su convertitori di tipi o estensioni di markup. Nella tecnica di ambiente deve essere presente anche una definizione specifica di convertitore di tipi o estensione di markup che specifica come deve essere interpretato e applicato al valore della proprietà di ambiente all'oggetto.

Note sull'utilizzo di WPF

Uno scenario di proprietà di ambiente illustrato nel set di funzionalità WPF è Style.TargetType, che può qualificare le ricerche del nome di proprietà necessarie per altri valori. In questo caso, il Style.TargetType valore qualifica i Setter.Property valori che si trovano nei nodi XAML sottostanti. Setter.Property usa il comportamento del convertitore di tipi per un oggetto DependencyProperty. Questo comportamento accede al valore di ambiente Style.TargetType eseguendo GetFirstAmbientValue query da un contesto del servizio disponibile per convertitori di tipi ed estensioni di markup.

Uno scenario di tipo di ambiente illustrato nel set di funzionalità WPF è ResourceDictionary. ResourceDictionary dispone di una MergedDictionaries proprietà che può contenere altri ResourceDictionary oggetti da unire e l'ordine previsto di risoluzione delle risorse per lo scenario unito è in conflitto con l'ordine in cui vengono caricati i tipi. ResourceDictionary AmbientAttribute si applica in modo che un processore XAML possa elaborare correttamente i riferimenti in un dizionario unito con StaticResource gli utilizzi. In particolare, StaticResource è un'estensione di markup che chiama GetAllAmbientValues.

Metodi

Nome Descrizione
GetAllAmbientValues(IEnumerable<XamlType>, Boolean, IEnumerable<XamlType>, XamlMember[])

Restituisce un set enumerabile di informazioni sulle proprietà di ambiente per il set richiesto di tipi e proprietà.

GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[])

Restituisce un set enumerabile di informazioni sulle proprietà di ambiente per il set richiesto di proprietà.

GetAllAmbientValues(XamlType[])

Restituisce un set enumerabile di istanze oggetto di possibili tipi di ambiente per i tipi richiesti.

GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[])

Restituisce un singolo elemento di informazioni sulle proprietà di ambiente dal set di proprietà richiesto, in base alla proprietà rilevata per la prima volta.

GetFirstAmbientValue(XamlType[])

Restituisce il primo oggetto corrispondente che è un possibile tipo di ambiente per i tipi richiesti.

Si applica a

Vedi anche