IQueryAmbient インターフェイス

定義

指定されたプロパティを現在のスコープでアンビエントとして扱う必要があるかどうかを照会します。

public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
派生

注釈

アンビエント プロパティ メカニズムの目的は、オブジェクトが一時的な値であり、一般的な実行時アプリケーションでは役に立たないことがわかっている場合に、特定のオブジェクトをインスタンス化しないように XAML オブジェクト ライターに通知することで解析時間を短縮することです。 通常、プロパティ取得アクセサーの XAML 参照または XAML 処理では、このようなオブジェクトをインスタンス化して、すぐに使用できる値でオブジェクト グラフ表現を埋める必要があります。

IQueryAmbient には、次の 1 つのメンバーがあります IsAmbientPropertyAvailable

IQueryAmbient に対する AmbientAttribute並列メカニズムです。 IQueryAmbientは、リフレクションを使用して情報を特定することを回避し、状況に応じて動作できる特殊なメカニズムです (特定のオブジェクトはレポートまたはfalseレポートtrueIsAmbientPropertyAvailable選択できます)。一方、属性は基本的に静的分析です。 AmbientAttribute は、XAML オブジェクト ライターで使用できる一般的なメカニズムであり、通常は専用の XAML 型のシステム プロパティ IsAmbientIsAmbient関連付けられます。

IQueryAmbient の WPF 実装

WPF では、 IQueryAmbient リソース ディクショナリの検索プロセスに使用されます。 参照プロセスは WPF 論理ツリー全体で連続する Resources 値を取得し、キーが見つかるか、キーがスコープ内に存在しないと判断されるまで、リソース スコープのルートに向かって動作します。 通常、これを行うには、結果を ResourceDictionary 受け取るたびにインスタンス化する必要があります。 存在する限Resourcesり、アンビエントとしてコンテンツResourcesを宣言すると、このルックアップ プロセスが最適化されます。 WPF では、このインターフェイスは次の場合に実装されます。

  • FrameworkElementは、IQueryAmbient.IsAmbientPropertyAvailableクエリがプロパティ自体に対してではない限り、既存ResourceDictionaryの for Resourcesが含まれている場合は、すべてのプロパティ名をResources返すようにtrue実装します。

  • Style には、同じパターンが実装されています Resources

  • Application には、同じパターンが実装されています Resources

  • FrameworkContentElement には、同じパターンが実装されています Resources

  • FrameworkTemplate には、同じパターンが実装されています Resources。 また、コンテンツをアンビエントとして報告Templateしますが、それ自体に対Templateしてfalseクエリを実行すると返されます。

  • これらの各ケースでは、関連 Resources するプロパティ (および Template) は AmbientAttribute. 一般的な使用方法は、インターフェイスを定義するオブジェクトの AmbientAttribute 属性付きプロパティではないプロパティを照会することです。 言い換えると、オブジェクト グラフの作成時に実行時の可能性のある値を提供するためにリソース ディクショナリが存在する限り、リソース ディクショナリのプロパティ コンテナー以外の他のプロパティはアンビエントとして扱うことができます。

メソッド

IsAmbientPropertyAvailable(String)

指定された名前付きプロパティを現在のスコープでアンビエントと見なすことができるかどうかを照会します。

適用対象

こちらもご覧ください