Встроенный тип XAML x:Code
Разрешает размещение кода в создание XAML. Такой код может быть скомпилирован либо с любой реализацией процессора XAML, которая компилирует код XAML, либо оставлен в создании XAML для использования в дальнейшем, например для интерпретации в среде выполнения.
Использование элемента объекта XAML
<x:Code>
// code instructions, usually enclosed by CDATA...
</x:Code>
Заметки
Код внутри элемента директивы x:Code XAML по-прежнему интерпретируется в общем пространстве имен XML и в предоставленных пространствах имен XML. Таким образом, обычно требуется также заключить код, используемый для элемента x:Code, внутрь сегмента CDATA.
x:Code не разрешен для всех возможных механизмов развертывания создания XAML. В конкретных платформах (например, WPF) необходимо скомпилировать код. В других платформах использование x:Code может в общем случае быть запрещено.
Для платформ, разрешающих использование управляемого содержимого x:Code, правильный компилятор языка для содержимого x:Code определяется параметрами и целевыми объектами содержащего проекта, который используется для компиляции приложения.
Примечания об использовании WPF
Код, объявленный внутри x:Code для WPF, имеет несколько существенных ограничений:
Элемент директивы x:Code должен быть непосредственным дочерним элементом корневого элемента создания XAML.
Директива x:Class должна указываться в родительском корневом элементе.
Код, помещенный в элемент x:Code, будет при компиляции рассматриваться как помещенный внутрь области разделяемого класса, который уже создан для этой страницы XAML. Таким образом, весь определяемый код должен относиться к членам или переменным этого разделяемого класса.
Определить дополнительные классы можно только вложением класса внутрь разделяемого класса (выполнять вложение разрешено, однако такой подход не является типичным, поскольку на вложенные классы нельзя ссылаться в XAML). Невозможно определить или добавить другие пространства имен CLR, кроме используемого для существующего разделяемого класса пространства имен.
Ссылки на сущности кода за пределами пространства имен CLR разделяемого класса должны иметь полное имя. Если объявляемые члены переопределяют члены разделяемого класса, то это должно быть указано с помощью ключевого слова переопределения для конкретного языка. Если члены, объявленные в области x:Code, конфликтуют с членами разделяемого класса, созданного вне XAML, и компилятор сообщает об этом, то файл XAML не может быть загружен или скомпилирован.