XAML 2009 では、共通言語ランタイム (CLR) やその他のプログラミング言語で頻繁に使用されるプリミティブである複数のデータ型に対する XAML 言語レベルのサポートが導入されています。 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 マークアップでの言語プリミティブの以前の手法
以前の WPF バージョンの XAML では、.NET Framework の CLR プリミティブ定義クラスを含むアセンブリと名前空間をマッピングすることで、CLR 言語プリミティブを参照できます。 これらのほとんどは、mscorlib アセンブリと System 名前空間にあります。 たとえば、Int32を使用するには、次のマッピングを宣言できます (その後に使用例を示します)。
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://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] セクション 7.2.17 および 7.4.11を参照してください。
x:Char
CLR バッキングの場合、x:Char プリミティブは Charに対応します。
文字列型と char 型は、XML レベルでのファイルの全体的なエンコードと相互作用します。 XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.7 および 7.4.1を参照してください。
x:String
CLR バッキングの場合、x:String プリミティブは Stringに対応します。
文字列型と char 型は、XML レベルでのファイルの全体的なエンコードと相互作用します。 XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.6を参照してください。
x:Decimal
CLR バッキングの場合、x:Decimal プリミティブは Decimalに対応します。
XAML 解析は、本質的に en-US カルチャの下で行われます。
en-US カルチャでは、開発環境のカルチャ設定、または実行時に XAML が読み込まれる最終的なクライアント ターゲットに関係なく、小数点のコンポーネントの正しい区切り記号は常にピリオド (.) です。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.14 および 7.4.8を参照してください。
x:Single
CLR バッキングの場合、x:Single プリミティブは Singleに対応します。
x:Single のテキスト構文では、数値に加えて、トークンの Infinity、-Infinity、および NaNも許可されます。 これらのトークンは、大文字と小文字が区別されます。
x:Single は、テキスト構文の最初の文字が e または E場合に、指数表記形式の値をサポートできます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.8 および 7.4.2を参照してください。
x:Double
CLR バッキングの場合、x:Double プリミティブは Doubleに対応します。
x:Double のテキスト構文では、数値に加えて、トークンの Infinity、-Infinity、および NaNを許可します。 これらのトークンは、大文字と小文字が区別されます。
x:Double は、科学的表記形式の値をサポートできます。 指数部を導入するには、文字 e または E を使用します。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.9 および 7.4.3を参照してください。
x:Int16
CLR バッキングの場合、x:Int16 プリミティブは Int16 に対応し、x:Int16 は符号付きとして扱われます。 XAML では、プラス記号 (+) が存在しないテキスト構文は、正の符号付き値として暗黙的に示されます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.11 および 7.4.5を参照してください。
x:Int32
CLR バッキングの場合、x:Int32 プリミティブは Int32に対応します。
x:Int32 は署名済みとして扱われます。 XAML では、プラス記号 (+) が存在しないテキスト構文は、正の符号付き値として暗黙的に示されます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.12 および 7.4.6を参照してください。
x:Int64
CLR バッキングの場合、x:Int64 プリミティブは Int64に対応します。
x:Int64 は署名済みとして扱われます。 XAML では、プラス記号 (+) が存在しないテキスト構文は、正の符号付き値として暗黙的に示されます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.13 および 7.4.7を参照してください。
x:TimeSpan
CLR バッキングの場合、x:TimeSpan プリミティブは TimeSpanに対応します。
日時形式の XAML 解析は、本質的に en-US カルチャの下で行われます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.16 および 7.4.10を参照してください。
x:Uri
CLR バッキングの場合、x:Uri プリミティブは Uriに対応します。
プロトコルのチェックは、x:Uriの XAML 定義の一部ではありません。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.15 および 7.4.9を参照してください。
x:Byte
CLR バッキングの場合、x:Byte プリミティブは Byteに対応します。
Byte
/
x:Byte は符号なしとして扱われます。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.10 および 7.4.4を参照してください。
x:配列
CLR バッキングの場合、x:Array プリミティブは Arrayに対応します。
XAML 2006 では、マークアップ拡張構文を使用して配列を定義できます。ただし、XAML 2009 構文は、マークアップ拡張機能にアクセスする必要のない言語定義のプリミティブです。 XAML 2006 のサポートの詳細については、「x:Array Markup Extension」を参照してください。
XAML 言語仕様の定義については、「[MS-XAML] セクション 7.2.18を参照してください。
WPF のサポート
WPF では、XAML 2009 機能を使用できますが、マークアップ コンパイルされていない XAML に対してのみ使用できます。 WPF 用のマークアップ コンパイル XAML と XAML の BAML 形式は、現在、XAML 2009 のキーワードと機能をサポートしていません。
XAML 2009 の機能を WPF と共に使用できるシナリオは、ルーズ XAML を作成し、その XAML を WPF ランタイムに読み込み、XamlReader.Loadを使用してオブジェクト グラフに読み込む場合です。 WPF System.Windows.Markup.XamlReader とその Load は、XAML 2009 言語のキーワードと機能を有効なオブジェクト グラフ表現に処理できます。
.NET Desktop feedback