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) |
指定された名前付きプロパティを現在のスコープでアンビエントと見なすことができるかどうかを照会します。 |
適用対象
こちらもご覧ください
.NET