AmbientAttribute クラス

定義

プロパティまたは型をアンビエントとして扱う必要があることを指定します。 アンビエントの概念は、XAML プロセッサがメンバーの型所有者を決定する方法に関連しています。

public ref class AmbientAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Property, Inherited=true)]
public sealed class AmbientAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method | System.AttributeTargets.Property, Inherited=true)]
public sealed class AmbientAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property, Inherited=true)>]
type AmbientAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Method | System.AttributeTargets.Property, Inherited=true)>]
type AmbientAttribute = class
    inherit Attribute
Public NotInheritable Class AmbientAttribute
Inherits Attribute
継承
AmbientAttribute
属性

注釈

アンビエント プロパティは、オブジェクト グラフの作成時にパーサー コンテキストで値を使用できる必要があるが、一般的な型メンバー参照が、すぐに作成される XAML ノード セットの目的で中断されるプロパティです。 アンビエント概念には、主に次の 2 つのシナリオがあります。

  • 同じオブジェクトのその他のプロパティは、そのオブジェクト プロパティ参照の動作に影響し、その動作を修飾します。

  • このプロパティは、より大きな遅延メカニズムを表し、メンバー値を検索するためのアンビエント機能は、現在のオブジェクトに含まれるすべてのオブジェクトに拡張されます。

この属性は、アンビエント プロパティの参照動作を有効にするコンテナーが必要な特定のプロパティに適用することも、プロパティの値型のすべてのケースでアンビエント プロパティの動作を有効にするためにクラスに適用することもできます。

AmbientAttribute また、XAML アタッチ可能なプロパティをアンビエントとして属性化するために、CLR メソッドに適用することもできます。 CLR 実装では、XAML 添付プロパティが、 get メソッドと set メソッドを持つアクセサー パターンとしてリフレクションに実装/表現されるため、これが必要になる可能性があります。 属性に対する実際の CLR プロパティが存在しないため、 AttributeTargets の使用を Property に制限しても、アタッチ可能なメンバーをアンビエントとして指定することはできません。 アンビエントとして報告するアタッチ可能なメンバーの場合は、 get アクセサーを属性化します。 アタッチ可能なメンバーのメソッドを特にサポートしていないメソッドを属性化しないでください。

以前のバージョンの .NET Framework では、このクラスは WPF 固有のアセンブリ WindowsBase に存在しました。 .NET Framework 4 では、 AmbientAttribute は System.Xaml アセンブリにあります。 詳細については、「 WPF から System.Xaml に移行された型」を参照してください。

アンビエント型 ( AmbientAttribute が型レベルで適用される型) は、プロパティの型を順を追って解決する必要がある特定の XAML 処理状況に使用できます。

オブジェクト ライターのシナリオ

XAML オブジェクト ライターを定義していて、 AmbientAttribute が適用されているプロパティ、メソッド、または型が発生した場合は、通常、サービスにアクセスして、オブジェクトの書き込みに必要なアンビエント プロパティの検索動作を決定する必要があります。 詳細については、IAmbientProviderを参照してください。

値コンバーター

型コンバーターまたはマークアップ拡張では、修飾の有無にかかわらず、メンバーまたは型を文字列名で指定するプロパティなど、間接型マッピングを表すプロパティを処理するために、アンビエント情報を知る必要がある場合があります。 このシナリオでは、 AmbientAttribute は値コンバーターのコード ロジックに直接使用することを意図していません。 代わりに、値コンバーターは XAML ライター処理動作に依存する必要があります。これは、呼び出されたときにサービス コンテキストの IAmbientProvider を値コンバーター メソッドに渡します。

AmbientAttribute の WPF シナリオ

  • Style (TargetType) のプロパティは、Setter.Property値内のプロパティ名のバッキング参照を検索するために必要なプロパティ名参照を修飾できます。

  • Resources プロパティ (ResourceDictionaryの項目) 内のすべてのコンテンツとテンプレート コンテンツは、値として他のピアにアクセスできる必要があります。 Resources プロパティ全体をアンビエントとして宣言すると、WPF XAML パーサーでこれを有効にするロジックが呼び出されます。

型レベルでAmbientAttributeを設定するシナリオの例については、ResourceDictionaryを参照してください。

コンストラクター

名前 説明
AmbientAttribute()

AmbientAttribute クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
TypeId

派生クラスで実装されている場合は、この Attributeの一意の識別子を取得します。

(継承元 Attribute)

メソッド

名前 説明
Equals(Object)

このインスタンスが指定したオブジェクトと等しいかどうかを示す値を返します。

(継承元 Attribute)
GetHashCode()

このインスタンスのハッシュ コードを返します。

(継承元 Attribute)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IsDefaultAttribute()

派生クラスでオーバーライドされた場合、このインスタンスの値が派生クラスの既定値であるかどうかを示します。

(継承元 Attribute)
Match(Object)

派生クラスでオーバーライドされた場合、このインスタンスが指定したオブジェクトと等しいかどうかを示す値を返します。

(継承元 Attribute)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

名前 説明
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

一連の名前を対応する一連のディスパッチ識別子に割り当てます。

(継承元 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

インターフェイスの型情報を取得するために使用できるオブジェクトの型情報を取得します。

(継承元 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

オブジェクトが提供する型情報インターフェイスの数 (0 または 1) を取得します。

(継承元 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

オブジェクトによって公開されるプロパティとメソッドへのアクセスを提供します。

(継承元 Attribute)

適用対象

こちらもご覧ください