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

定義されている任意の静的な値をコード エンティティを参照、 共通言語仕様 (CLS)Common Language Specification (CLS)– に準拠した方法。References any static by-value code entity that is defined in a 共通言語仕様 (CLS)Common Language Specification (CLS)–compliant way. XAML のプロパティの値を提供する、参照されている静的プロパティを使用できます。The static property that is referenced can be used to provide the value of a property in XAML.

XAML 属性の使用方法XAML Attribute Usage

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

XAML 値XAML Values

prefix 任意。Optional. 割り当てられた、既定以外の XAML 名前空間を参照するプレフィックス。A prefix that refers to a mapped, non-default XAML namespace. prefix 明示的に使用量のため表示から既定の XAML 名前空間を静的プロパティを参照することはほとんどありません。prefix is shown explicitly in the usage because you rarely reference static properties that come from a default XAML namespace. 「解説」を参照してください。See Remarks.
typeName 必須。Required. 必要な静的メンバーを定義する型の名前。The name of the type that defines the desired static member.
staticMemberName 必須。Required. (定数、静的プロパティ、フィールド、または列挙値) の静的な値が必要なメンバーの名前。The name of the desired static value member (a constant, a static property, a field, or an enumeration value).

RemarksRemarks

参照されているコード エンティティは、次のいずれかである必要があります。The code entity that is referenced must be one of the following:

  • 定数A constant
  • 静的プロパティA static property
  • フィールドA field
  • 列挙値An enumeration value

非静的のプロパティなど、他のコード エンティティを指定すると、XAML がコンパイルされると、マークアップまたは XAML 読み込み時の解析の例外の場合は、コンパイル時エラーとします。Specifying any other code entity, such as a nonstatic property, causes a compile-time error if the XAML is markup compiled, or a XAML load-time parse exception.

行うことができますx:Static静的フィールドまたは現在の XAML ドキュメントの既定の XAML 名前空間に属さないプロパティへの参照ただし、プレフィックスのマッピングが必要です。You can make x:Static references to static fields or properties that are not in the default XAML namespace for the current XAML document; however, this requires a prefix mapping. XAML 名前空間は、ほとんどの場合に、XAML ドキュメントのルート要素で定義されます。XAML namespaces are almost always defined on the root element of the XAML document.

既定の XAML スキーマ コンテキストで実行されている場合、.NET Framework XAML サービスおよびその XAML リーダーと XAML ライターによって静的なプロパティの検索操作を実行できます。The lookup operations for static properties can be performed by .NET Framework XAML Services and its XAML readers and XAML writers, when they are running with the default XAML schema context. この XAML スキーマ コンテキストでは、CLR リフレクションを使用して、オブジェクト グラフの構築のために必要な静的な値を指定します。This XAML schema context can use CLR reflection to provide the necessary static values for object graph construction. typeNameを指定する実際には XAML 型名を CLR 型名ではなく、これらは基本的に同じ名前、既定の XAML スキーマ コンテキストを使用する場合、または既存のすべての CLR ベース XAML 実装するフレームワークを使用する場合は。The typeName you specify is actually a XAML type name, not a CLR type name, although these are essentially the same name when using the default XAML schema context or when using all existing CLR-based XAML-implementing frameworks.

行ったと注意して使用x:Static直接プロパティの値の型ではない参照をします。Use caution when you make x:Static references that are not directly the type of a property's value. XAML マークアップ拡張機能で指定した値のシーケンス処理を呼び出さないでください追加の値の変換。In the XAML processing sequence, provided values from a markup extension do not invoke additional value conversion. これは、true の場合でも、x:Static参照は、文字列を作成し、通常のテキスト文字列に基づく属性値の値の変換は、特定のメンバーまたは戻り値の型のメンバー値のいずれかに発生します。This is true even if your x:Static reference creates a text string, and a value conversion for attribute values based on text string typically occurs either for that specific member or for any member values of the return type.

属性構文は、このマークアップ拡張機能で使用される最も一般的な構文です。Attribute syntax is the most common syntax used with this markup extension. x:Static 識別子文字列の後に設定される文字列トークンは、基になる Member 拡張クラスの StaticExtension 値として割り当てられます。The string token provided after the x:Static identifier string is assigned as the Member value of the underlying StaticExtension extension class.

技術的に可能なその他の 2 つの XAML 使用法があります。There are two other XAML usages that are technically possible. ただし、これらの使用方法は、不必要に詳細があまり一般的なは。However, these usages are less common because they are unnecessarily verbose:

  1. オブジェクト要素構文です。Object element syntax.

    <x:Static Member="prefix:typeName.staticMemberName" ... />
    
  2. 初期化文字列の明示的なメンバー プロパティの構文を属性します。Attribute syntax with explicit Member property for initialization string.

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

このマークアップ拡張機能の処理がによって定義されている、.NET Framework XAML サービス実装、StaticExtensionクラス。In the .NET Framework XAML Services implementation, the handling for this markup extension is defined by the StaticExtension class.

x:Static はマークアップ拡張機能です。x:Static is a markup extension. XAML のすべてのマークアップ拡張機能は {} 文字をそれぞれの属性構文内で使用します。これはマークアップ拡張機能が値を提供する必要があることを XAML プロセッサに認識させるための規則です。All markup extensions in XAML use the { and } characters in their attribute syntax, which is the convention by which a XAML processor recognizes that a markup extension must provide a value. マークアップ拡張機能について詳しくは、「 XAML のマークアップ拡張機能の概要」をご覧ください。For more information about markup extensions, see Markup Extensions for XAML Overview.

WPF の使用上の注意WPF Usage Notes

WPF プログラミングで使用する既定の XAML 名前空間に多数の便利な静的プロパティが含まれていないと、便利な静的プロパティのほとんどはなどを必要とせず、使用状況を容易にする型コンバーターをサポート{x:Static}します。The default XAML namespace you use for WPF programming does not contain many useful static properties, and most of the useful static properties have support such as type converters that facilitate the usage without requiring {x:Static} . 静的プロパティは、次のいずれかが true の場合、XAML 名前空間のプレフィックスをマップする必要があります。For static properties, you must map a prefix for a XAML namespace if one of the following is true:

  • WPF に存在しますが、WPF の既定の XAML 名前空間の一部でない型を参照している (http://schemas.microsoft.com/winfx/2006/xaml/presentation)。You are referencing a type that exists in WPF but is not part of the default XAML namespace for WPF (http://schemas.microsoft.com/winfx/2006/xaml/presentation). これは、非常に一般的なシナリオを使用するためx:Staticします。This is a fairly common scenario for using x:Static. たとえば、使用する場合があります、x:Staticへのマッピングを XAML 名前空間を持つ参照、Systemの静的プロパティを参照するには CLR 名前空間と mscorlib アセンブリ、Environmentクラス。For example, you might use an x:Static reference with a XAML namespace mapping to the System CLR namespace and mscorlib assembly in order to reference the static properties of the Environment class.

  • カスタム アセンブリから型を参照しています。You are referencing a type from a custom assembly.

  • その型が既定の WPF XAML 名前空間の一部としてマップされていませんでしたが CLR 名前空間は WPF アセンブリに存在する型を参照しています。You are referencing a type that exists in a WPF assembly, but that type is within a CLR namespace that was not mapped to be part of the WPF default XAML namespace. WPF の既定の XAML 名前空間に CLR 名前空間のマッピングは、さまざまな WPF アセンブリ内の定義によって実行されます (この概念の詳細については、次を参照してください。 XAML 名前空間および WPF XAML の Namespace マッピング)。The mapping of CLR namespaces into the default XAML namespace for WPF is performed by definitions in the various WPF assemblies (for more information about this concept, see XAML Namespaces and Namespace Mapping for WPF XAML). CLR 名前空間のマッピングされていないがその CLR 名前空間が、通常は想定されていません、XAML などのクラス定義のほとんどの場合で構成される場合に存在できるSystem.Windows.Threadingします。Non-mapped CLR namespaces can exist if that CLR namespace is composed mostly of class definitions that are not typically intended for XAML, such as System.Windows.Threading.

WPF のプレフィックスと XAML 名前空間を使用する方法の詳細については、次を参照してください。 XAML 名前空間および WPF XAML のマッピングの Namespaceします。For more information on how to use prefixes and XAML namespaces for WPF, see XAML Namespaces and Namespace Mapping for WPF XAML.

関連項目See also