Атрибут 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 и пользовательские классы