共通の XAML 言語プリミティブの組み込み型
XAML 2009 では、いくつかのデータ型に対する XAML 言語をサポートします。これらのデータ型は、共通言語ランタイム (CLR: Common Language Runtime) およびその他のプログラミング言語でよく使用されているプリミティブです。 XAML 2009 でサポートされるようになったのは、x:Object、x:Boolean、x:Char、x:String、x:Decimal、x:Single、x:Double、x:Int16、x:Int32、x:Int64、x:TimeSpan、x:Uri、x:Byte、および x:Array の各プリミティブです。
このトピックは、次のセクションで構成されています。
- XAML マークアップの言語プリミティブにおける以前の技術
- XAML 2009 言語プリミティブ
- WPF のサポート
XAML マークアップの言語プリミティブにおける以前の技術
以前の WPF バージョンの XAML では、.NET Framework の CLR プリミティブ定義クラスを含むアセンブリと名前空間をマッピングすることによって、CLR 言語プリミティブを参照していました。 これらの大半は mscorlib アセンブリおよび System 名前空間に含まれています。 たとえば、Int32 を使用するには、次のマッピングを宣言します (使用例については、その後に示します)。
<Application xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<Application.Resources>
<sys:Int32 x:Key="intMeaning">42</sys:Int32>
</Application.Resources>
</Application>
XAML 2009 言語プリミティブ
慣例により、XAML の言語プリミティブとその他すべての XAML 言語要素は、x: プレフィックスを含めて示されます。 XAML 言語要素は、実際のマークアップで一般的にこのように使用されます。 WPF の XAML の概念ドキュメントや XAML 仕様書でも、この規則に従っています。
x:Object
CLR バッキングの場合は、x:Object プリミティブは Object に対応しています。
このプリミティブは通常はアプリケーション マークアップでは使用されず、XAML 型システムで割り当てできるかどうかを確認する場合などに便利です。
x:Boolean
CLR バッキングの場合は、x:Boolean プリミティブは Boolean に対応しています。
XAML は、x:Boolean の値の大文字と小文字を区別しないで解析します。 x:Bool は、承諾済みのプリミティブではありません。 XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.17 節と第 5.4.11 節」を参照してください。
x:Char
CLR バッキングの場合は、x:Char プリミティブは Char に対応しています。
文字列型および char 型は、XML レベルでファイルの全体的なエンコーディングと相互作用しています。 XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.7 節と第 5.4.1 節」を参照してください。
x:String
CLR バッキングの場合は、x:String プリミティブは String に対応しています。
文字列型および char 型は、XML レベルでファイルの全体的なエンコーディングと相互作用しています。 XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.6 節」を参照してください。
x:Decimal
CLR バッキングの場合は、x:Decimal プリミティブは Decimal に対応しています。
XAML の解析は、本質的に en-US カルチャにおいて行われます。 en-US カルチャでは、開発環境または、XAML が実行時に読み込まれる最終的なクライアント ターゲットのカルチャ設定に関係なく、小数コンポーネントの正しい区切り記号は常にピリオド (.) です。
XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.14 節と第 5.4.8 節」を参照してください。
x:Single
CLR バッキングの場合は、x:Single プリミティブは Single に対応しています。
数値に加え、x:Single のテキスト構文はトークン Infinity、-Infinity、および NaN も許可しています。 これらのトークンは、大文字と小文字を区別します。
x:Single は、テキスト構文の最初の文字が e または E の場合は、指数表記形式の値をサポートします。
XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.8 節と第 5.4.2 節」を参照してください。
x:Double
CLR バッキングの場合は、x:Double プリミティブは Double に対応しています。
数値に加え、x:Double のテキスト構文は、Infinity、-Infinity、および NaN の各トークンも許可しています。 これらのトークンは、大文字と小文字を区別します。
x:Double は、テキスト構文の最初の文字が e または E の場合は、指数表記形式の値をサポートします。
XAML 言語仕様の定義については、「[MS-XAML] ([MS-XAML])」の第 5.2.9 節と第 5.4.3 節 を参照してください。
x:Int16
CLR バッキングの場合は、x:Int16 プリミティブは Int16 に対応し、x:Int16 は符号付きとして処理されます。 XAML では、テキスト構文に正 (+) 符号がない場合でも、暗黙的に正符号値を示しています。
XAML 言語仕様の定義については、「[MS-XAML] ([MS-XAML])」の第 5.2.11 節と第 5.4.5 節 を参照してください。
x:Int32
CLR バッキングの場合は、x:Int32 プリミティブは Int32 に対応しています。 x:Int32 は符号付きとして処理されます。 XAML では、テキスト構文に正 (+) 符号がない場合でも、暗黙的に正符号値を示しています。
XAML 言語仕様の定義については、「[MS-XAML] ([MS-XAML])」の第 5.2.12 節と第 5.4.6 節 を参照してください。
x:Int64
CLR バッキングの場合は、x:Int64 プリミティブは Int64 に対応しています。 x:Int64 は符号付きとして処理されます。 XAML では、テキスト構文に正 (+) 符号がない場合でも、暗黙的に正符号値を示しています。
XAML 言語仕様の定義については、「[MS-XAML] ([MS-XAML])」の第 5.2.13 節と第 5.4.7 節 を参照してください。
x:TimeSpan
CLR バッキングの場合は、x:TimeSpan プリミティブは TimeSpan に対応しています。
XAML の時刻-日付形式での解析は、本質的に en-US カルチャにおいて行われます。
XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.16 節と第 5.4.10 節」を参照してください。
x:Uri
CLR バッキングの場合は、x:Uri プリミティブは Uri に対応しています。
プロトコルのチェックは、x:Uri の XAML 定義の一部ではありません。
XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.15 節と第 5.4.9 節」を参照してください。
x:Byte
CLR バッキングの場合は、x:Byte プリミティブは Byte に対応しています。 Byte / x:Byte は符号なしとして扱われます。
XAML 言語仕様の定義については、「[MS-XAML] 第 5.2.10 節と第 5.4.4 節」を参照してください。
x:Array
CLR バッキングの場合は、x:Array プリミティブは Array に対応しています。
マークアップ拡張構文を使用して配列を XAML 2006 で定義することもできますが、XAML 2009 構文は言語によって定義されたプリミティブであり、マークアップ拡張機能にアクセスする必要がありません。 XAML 2006 のサポートの詳細については、「x:Array のマークアップ拡張機能」を参照してください。
XAML 言語仕様の定義については、「[MS-XAML] ([MS-XAML])」の第 5.2.18 節 を参照してください。
WPF のサポート
WPF では XAML 2009 の機能を使用できますが、マークアップ コンパイルされていない XAML に限定されます。 WPF 向けにマークアップ コンパイルされた XAML、および XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。
WPF と共に XAML 2009 の機能を使用できるシナリオとして、Loose XAML を作成し、その XAML を XamlReader.Load を使用して WPF ランタイムとオブジェクト グラフに読み込む場合があります。 WPF System.Windows.Markup.XamlReader およびその Load は、XAML 2009 言語キーワードおよび機能を有効なオブジェクト グラフ表現に処理することができます。