IAmbientProvider 介面

定義

表示服務,這個服務可以將環境屬性或環境型別的資訊項目傳回給型別轉換器和標記延伸。

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

備註

這個介面代表可協助類型轉換器和標記延伸的服務,以取得 XAML 類型系統的環境屬性識別碼 (XamlMember 物件) 。 服務也可以從類別取得環境屬性值。 類型也可以是環境;使用該類型作為其值的任何成員都應該視為環境。

此服務通常是透過對 的呼叫 GetService 傳回,這會針對內容特定的服務提供者進行。 服務提供者通常可供需要它的內容使用,例如值轉換器的執行程式碼。 如需詳細資訊,請參閱Type Converters 和 Markup Extensions for XAML 和服務內容的 Type Converters 和 Markup Extensions

關於環境屬性

環境屬性是屬性,其屬性值應該可供類型轉換器和標記延伸使用方式使用,這些用法存在於 XAML 節點結構和從中建立的物件圖形中。 這在載入路徑的物件寫入階段或儲存路徑的序列化階段期間,與 XAML 處理器有關。

在載入路徑案例中,環境屬性值可能會影響 XAML 節點結構中存在其他屬性的物件圖形中的值。 當當做 XAML 節點資料流程處理時,環境概念表示環境屬性值必須可用於類型轉換子和標記延伸至 StartObjectEndObject 。 同樣地,用於儲存路徑的類型轉換器可以使用環境屬性及其值的知識。 因此,產生的 XAML 是較佳的來回標記法。

一般而言,XAML 不會指定必須處理物件成員的順序。 不過,XAML 讀取器必須先處理任何環境屬性值,讓其他屬性中包含的類型轉換器和標記延伸使用方式可以透過 IAmbientProvider 服務存取它。

DependsOn 是也會影響 XAML 節點處理順序的類似概念。 不過, DependsOn 只能用於對等成員和節點關聯性;它無法影響所有子系。 此外, DependsOn 也會直接影響物件圖形屬性設定;而環境技術則依賴類型轉換器或標記延伸。 在環境技術中,也必須有特定的型別轉換子或標記延伸定義,以指定環境屬性值應該如何解譯並套用至物件。

WPF 使用注意事項

WPF 功能集中說明的環境屬性案例是 Style.TargetType ,它可以限定其他值的必要屬性名稱查閱。 在此情況下, Style.TargetType 值會限定 Setter.Property 位於其下方 XAML 節點中的值。 Setter.Property 使用 的 DependencyProperty 型別轉換器行為。 此行為會從類型轉換器和標記延伸可用的服務內容查詢 GetFirstAmbientValue ,以存取環境 Style.TargetType 值。

WPF 功能集中說明的環境類型案例為 ResourceDictionaryResourceDictionaryMergedDictionaries具有可包含其他 ResourceDictionary 要合併之物件的屬性,以及合併案例之資源解析的預期順序與載入類型的順序衝突。 ResourceDictionary 會套用 , AmbientAttribute 讓 XAML 處理器可以使用用法正確地處理合併字典 StaticResource 中的參考。 具體而言, StaticResource 是一種標記延伸,其會呼叫 GetAllAmbientValues

方法

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

針對要求的型別和屬性集,傳回環境屬性資訊項目的可列舉集。

GetAllAmbientValues(IEnumerable<XamlType>, XamlMember[])

針對要求的屬性集,傳回環境屬性資訊項目的可列舉集。

GetAllAmbientValues(XamlType[])

針對要求的型別,傳回可能環境型別之物件執行個體的可列舉集。

GetFirstAmbientValue(IEnumerable<XamlType>, XamlMember[])

從要求的屬性集傳回單一環境屬性資訊項目,以第一個遇到的屬性為準。

GetFirstAmbientValue(XamlType[])

傳回第一個相符物件,這個物件可能是符合所要求型別的環境型別。

適用於

另請參閱