IQueryAmbient インターフェイス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定されたプロパティを現在のスコープでアンビエントとして扱う必要があるかどうかを照会します。
public interface class IQueryAmbient
public interface IQueryAmbient
type IQueryAmbient = interface
Public Interface IQueryAmbient
- 派生
注釈
アンビエント プロパティ メカニズムの目的は、オブジェクトが一時的な値であり、一般的な実行時アプリケーションでは役に立たないことがわかっている場合に、特定のオブジェクトをインスタンス化しないように XAML オブジェクト ライターに通知することで解析時間を短縮することです。 通常、プロパティ取得アクセサーの XAML 参照または XAML 処理では、このようなオブジェクトをインスタンス化して、すぐに使用できる値でオブジェクト グラフ表現を埋める必要があります。
IQueryAmbient には、次の 1 つのメンバーがあります IsAmbientPropertyAvailable。
IQueryAmbient に対する AmbientAttribute並列メカニズムです。 IQueryAmbientは、リフレクションを使用して情報を特定することを回避し、状況に応じて動作できる特殊なメカニズムです (特定のオブジェクトはレポートまたはfalseレポートtrueをIsAmbientPropertyAvailable選択できます)。一方、属性は基本的に静的分析です。 AmbientAttribute は、XAML オブジェクト ライターで使用できる一般的なメカニズムであり、通常は専用の XAML 型のシステム プロパティ IsAmbient と IsAmbient関連付けられます。
IQueryAmbient の WPF 実装
WPF では、 IQueryAmbient リソース ディクショナリの検索プロセスに使用されます。 参照プロセスは WPF 論理ツリー全体で連続する Resources 値を取得し、キーが見つかるか、キーがスコープ内に存在しないと判断されるまで、リソース スコープのルートに向かって動作します。 通常、これを行うには、結果を ResourceDictionary 受け取るたびにインスタンス化する必要があります。 存在する限Resourcesり、アンビエントとしてコンテンツResourcesを宣言すると、このルックアップ プロセスが最適化されます。 WPF では、このインターフェイスは次の場合に実装されます。
FrameworkElementは、IQueryAmbient.IsAmbientPropertyAvailableクエリがプロパティ自体に対してではない限り、既存ResourceDictionaryの for Resourcesが含まれている場合は、すべてのプロパティ名をResources返すように
true実装します。Application には、同じパターンが実装されています Resources。
FrameworkContentElement には、同じパターンが実装されています Resources。
FrameworkTemplate には、同じパターンが実装されています Resources。 また、コンテンツをアンビエントとして報告Templateしますが、それ自体に対Templateして
falseクエリを実行すると返されます。これらの各ケースでは、関連
Resourcesするプロパティ (および Template) は AmbientAttribute. 一般的な使用方法は、インターフェイスを定義するオブジェクトの AmbientAttribute 属性付きプロパティではないプロパティを照会することです。 言い換えると、オブジェクト グラフの作成時に実行時の可能性のある値を提供するためにリソース ディクショナリが存在する限り、リソース ディクショナリのプロパティ コンテナー以外の他のプロパティはアンビエントとして扱うことができます。
メソッド
| IsAmbientPropertyAvailable(String) |
指定された名前付きプロパティを現在のスコープでアンビエントと見なすことができるかどうかを照会します。 |