IQueryAmbient 介面
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
查詢是否應該將指定的屬性視為目前範圍中的環境屬性。
public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
- 衍生
備註
環境屬性機制的目的是藉由通知 XAML 物件寫入器避免具現化特定物件來改善剖析時間,在已知物件適用於暫存且不適用於一般運行時間應用程式的值時。 一般而言,屬性 get 存取子的 XAML 查閱或 XAML 處理需要具現化這類物件,才能以現成可用的值填滿物件圖形表示法。
IQueryAmbient 有一個成員: IsAmbientPropertyAvailable。
IQueryAmbient 是的 AmbientAttribute平行機制。
IQueryAmbient 是避免使用反映來判斷資訊的特製化機制,也可以以情況方式 (指定物件可以選擇報告 true
或 false
IsAmbientPropertyAvailable 用於) ,而屬性基本上是靜態分析) 。
AmbientAttribute 是 XAML 物件寫入器可以使用的一般機制,通常與專用的 XAML 類型系統屬性 IsAmbient 和 IsAmbient相互關聯。
IQueryAmbient 的 WPF 實作
在 WPF 中, IQueryAmbient 會用於資源字典查閱程式。 查閱程式會在整個 WPF 邏輯樹狀結構中取得連續 Resources
的值,直到找到索引鍵或索引鍵判斷為不存在於範圍之前,才會處理資源範圍的根目錄。 一般而言,這麼做需要每次具現化, ResourceDictionary 才能接收結果。 只要Resources
存在,將的內容Resources
宣告為環境,就會優化此查閱程式。 在 WPF 中,此介面會在下列情況下實作:
FrameworkElement如果IQueryAmbient.IsAmbientPropertyAvailable它包含 現有的 ResourceDictionary ,Resources則會實作 以傳回
true
所有屬性名稱,只要查詢不是Resources屬性本身即可。Application 會為其實作 Resources相同的模式。
FrameworkContentElement 會為其實作 Resources相同的模式。
FrameworkTemplate 會為其實作 Resources相同的模式。 它也會將內容報告Template為環境,但如果查詢Template本身,則會傳回
false
。在這些情況下,相關
Resources
屬性 (和 Template) 都會以 屬性表示 AmbientAttribute。 典型的用法是查詢不是 AmbientAttribute 定義介面之物件的屬性屬性。 換句話說,只要資源字典存在,才能在建立物件圖形時提供潛在的運行時間值,除了資源字典的屬性容器以外的任何其他屬性都可以視為環境。
方法
IsAmbientPropertyAvailable(String) |
查詢是否可以將指定的具名屬性視為目前範圍中的環境屬性。 |