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


Атрибут x:Subclass

Обновлен: Ноябрь 2007

Изменяет поведение компиляции XAML при наличии атрибута x:Class. В частности, вместо создания разделяемого класса на основе класса страницы, предоставленный атрибут x:Class создается в качестве промежуточного класса, и затем предоставленный производный класс будет основываться на атрибуте x:Class.

Использование атрибута XAML

<object x:Class="namespace.classname" x:Subclass="subclassNamespace.subclassName">
   ...
</object>

Значения XAML

namespace

Необязательное значение. Задает пространство имен CLR, содержащее параметр classname. Если задан параметр namespace, параметры namespace и classname разделяются точкой (.).

classname

Обязательное значение. Указывает имя CLR разделяемого класса, который связывает загруженный XAML и выделенный код для XAML. См. примечания.

subclassNamespace

Необязательное значение. Может отличаться от параметра namespace, до тех пор, пока каждое пространство имен можно заменить другим. Задает пространство имен CLR, содержащее параметр subclassName. Если задан параметр subclassName, параметры subclassNamespace и subclassName разделяются точкой (.).

subclassName

Обязательное значение. Задает имя подкласса CLR.

Зависимости

Атрибут x:Class также должен быть предоставлен в том же элементе, и этот элемент должен быть корневым элементом страницы.

Заметки

Атрибут x:Subclass необходимо использовать в первую очередь для языков, которые не поддерживают объявление разделяемого класса.

Атрибут x:Subclass можно объявить для любого элемента, являющегося корневым элементом страницы Язык XAML (Extensible Application Markup Language) и (или) для корневого уровня объекта Application в определении приложения, в котором уже присутствует атрибут x:Class. Объявление x:Subclass на любом элементе, кроме корня страницы или приложения, или указание его там, где отсутствует атрибут x:Class, приведет к ошибке во время компиляции.

Создание производных классов, правильно работающих со сценарием x:Subclass, является довольно сложной задачей. Может потребоваться проверка промежуточных файлов (в папке obj проекта G-файлы с именами, включающими имена XAML-файлов). Промежуточные файлы могут помочь определить происхождение отдельных программных конструкций в разделяемых классах внутри скомпилированного приложения.

Класс, используемый в качестве x:Subclass, не может быть вложенным классом.

Обработчики событий в производном классе должны быть internal override (Friend Overrides в Microsoft Visual Basic .NET), чтобы переопределить заглушки для обработчиков при создании в промежуточном классе во время компиляции. В противном случае реализация производного класса скроет (затенит) реализацию промежуточного класса и при вызове обработчиков промежуточного класса возникнет ошибка.

При определении x:Class и x:Subclass необязательно предоставлять реализацию любого класса, на который ссылается x:Class. Достаточно присвоить имя через атрибут x:Class, чтобы у компилятора были некоторые руководства по классу, который он создает в промежуточных файлах (в этом случае компилятор не выбирает имя по умолчанию). При необходимости можно предоставить реализацию класса x:Class, но не в типичном сценарии при одновременном использовании x:Class и x:Subclass.

См. также

Основные понятия

Язык XAML и пользовательские классы

Ссылки

Атрибут x:Class