Поделиться через


Встроенные типы для общих примитивов языка 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 в правильное представление графа объектов.