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