Встроенные типы для общих примитивов языка XAML
В XAML 2009 вводится поддержка на уровне языка XAML нескольких типов данных, представляющих собой часто используемые примитивы в среде CLR и других языках программирования. В 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
В XAML для предыдущих версий WPF можно было ссылаться на примитивы языков среды CLR путем сопоставления сборки и пространства имен, содержащих класс определения примитива CLR для платформы .NET. Большинство из них содержатся в сборке 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 в реальной разметке. Это соглашение соблюдается в основной документации по XAML в WPF, а также в спецификации 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.
Строковые и символьные типы взаимодействуют с общей кодировкой файла на уровне XML. Определение в спецификации языка XAML см. в документе [MS-XAML], разделы 5.2.7 и 5.4.1.
x:String
Для резервирования CLR примитив x:String соответствует классу String.
Строковые и символьные типы взаимодействуют с общей кодировкой файла на уровне 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], разделы 5.2.9 и 5.4.3.
x:Int16
Для резервирования CLR примитив x:Int16 соответствует классу Int16, причем x:Int16 рассматривается как знаковое число. В XAML отсутствие знака плюс (+) в текстовом синтаксисе неявно задает положительное знаковое значение.
Определение в спецификации языка XAML см. в документе [MS-XAML], разделы 5.2.11 и 5.4.5.
x:Int32
Для резервирования CLR примитив x:Int32 соответствует классу Int32. x:Int32 рассматривается как знаковое число. В XAML отсутствие знака плюс (+) в текстовом синтаксисе неявно задает положительное знаковое значение.
Определение в спецификации языка XAML см. в документе [MS-XAML], разделы 5.2.12 и 5.4.6.
x:Int64
Для резервирования CLR примитив x:Int64 соответствует классу Int64. x:Int64 рассматривается как знаковое число. В XAML отсутствие знака плюс (+) в текстовом синтаксисе неявно задает положительное знаковое значение.
Определение в спецификации языка 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.
Проверка протоколов не является частью определения XAML для x:Uri.
Определение в спецификации языка 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], раздел 5.2.18.
Поддержка WPF
В WPF можно использовать возможности XAML 2009, но только для кода XAML, который не является компилированной разметкой. XAML с компилированной разметкой для WPF и форма BAML кода XAML в настоящее время не поддерживают ключевые слова и возможности XAML 2009.
Одним из возможных сценариев использования возможностей XAML 2009 вместе с WPF является создание свободного XAML с последующей загрузкой этого кода XAML в среду WPF времени выполнения и граф объектов с помощью метода XamlReader.Load. Класс System.Windows.Markup.XamlReader WPF и его метод Load могут преобразовать ключевые слова и возможности XAML 2009 в правильное представление графа объектов.