x:Static のマークアップ拡張機能

更新 : 2007 年 11 月

共通言語仕様 (CLS) に準拠した方法で定義されている、任意の静的な値渡しコード エンティティを参照します。参照されるプロパティは、XAML ページの残りの部分を読み込む前に評価され、そのプロパティ値を XAML で提供するために使用できます。

XAML 属性の使用方法

<object property="{x:Static prefix:typeName.staticMemberName}" .../>

XAML オブジェクト要素の使用方法

<object>
  <object.property>
    <x:Static Member="prefix:typeName.staticMemberName" .../>
  </object.property>
</object>

XAML 値

prefix

省略可能。既定以外の xmlns 名前空間を割り当てるプレフィックス。「解説」を参照してください。

typeName

必須。目的の静的なメンバを定義する型。

staticMemberName

必須。目的の静的な値メンバの名前 (定数、静的プロパティ、フィールド、または列挙値)。

解説

参照されるコード エンティティは次のいずれかにする必要があります。

  • 定数

  • 静的プロパティ

  • フィールド

  • 列挙値

非静的プロパティなど、他のコード エンティティを指定すると、コンパイル時エラーが発生します。

既定の xmlns 名前空間内にない静的なフィールドやプロパティに対して x:Static 参照を作成することはできますが、これにはプレフィックスの割り当てが必要です。特定の XAML 要素の既定の xmlns 名前空間を属性として定義します。これは通常、ルートの下のすべての要素に xmlns が適用されるように、ルート要素上で定義されます。一般に Windows Presentation Foundation (WPF) プログラミングで使用する既定の XML 名前空間は WPF 名前空間です。次のいずれかに該当する場合、プレフィックスを割り当てる必要があります。

  • Microsoft .NET Framework 内に存在するが、WPF 名前空間の一部ではない型を参照している場合。これは、x:Static を使用する非常に一般的なシナリオです。たとえば、Environment クラスの静的プロパティを参照するためには、System CLR 名前空間に割り当てられたプレフィックスを持つ x:Static 参照を使用できます。

  • カスタム アセンブリの型を参照している場合。

  • WPF アセンブリ内に存在する型を参照しているが、その型が WPF 名前空間の一部になるように割り当てられた名前空間以外の CLR 名前空間内にある場合。割り当ては、そのアセンブリ内の定義によって実行されます。未割り当ての CLR 名前空間は、通常は XAML で使用されない CLR 名前空間の WPF クラス定義で一般的であり、例として System.Windows.Threading が挙げられます。

プレフィックスおよび XML 名前空間の詳細については、「XAML 名前空間および名前空間の割り当て」を参照してください。

プロパティの値の直接の型ではなくても、その型に評価できる x:Static 参照を使用できます。たとえば、x:Static 参照を使用して列挙体の値や、SystemColors で定義されているさまざまな色やブラシなどの静的なプロパティの値を取得できます。x:Static 参照は、参照型を持つプロパティに実際に基づいている場合でも、XAML 構文で任意のプロパティを設定するために使用される可能性があります。これは、一度評価された x:Static 値の実際の処理は、静的な値が適用されるプロパティの型コンバータの動作に応じて変わる場合があるためです。

属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。x:Static 識別子文字列の後に設定される文字列トークンは、基になる StaticExtension 拡張クラスの Member 値として割り当てられます。

x:Static は、オブジェクト要素構文で使用できます。この場合、Member プロパティの値の指定は必須です。

x:Static は、Member プロパティをプロパティおよび値のペアとして指定する詳細出力属性使用でも使用できます。

<object property="{x:Static Member=prefix:typeName.staticMemberName}" .../>

詳細出力の使用は、複数の設定可能プロパティを持つ拡張機能や、一部のプロパティがオプションである場合に役立ちます。x:Static には、必須の設定可能プロパティが 1 つしか存在しないため、このような詳細出力の使用は一般的ではありません。

WPF XAML プロセッサ実装では、このマークアップ拡張機能の処理は、StaticExtension クラスによって定義されます。

x:Static はマークアップ拡張機能です。一般にマークアップ拡張機能を実装するのは、属性値をリテラル値やハンドラ名以外にエスケープする要件が存在し、その要件の適用範囲がグローバルで、特定の型やプロパティに型コンバータを適用するだけにとどまない場合です。XAML のすべてのマークアップ拡張機能では、それぞれの属性構文で { と } の 2 つの記号を使用します。これは規約であり、これに従って XAML プロセッサは、マークアップ拡張機能で属性を処理する必要があることを認識します。一般的なマークアップ拡張機能の詳細については、「マークアップ拡張機能と XAML」を参照してください。

参照

概念

スタイルとテンプレート

XAML の概要

マークアップ拡張機能と XAML

参照

x:Type マークアップ拡張機能