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


Директива x:Class

Настраивает параметры компиляции разметки XAML для объединения разделяемых классов разметки и классов с выделенным кодом. Разделяемый класс кода определяется в отдельном файле кода на языке Common Language Specification (CLS). Разделяемый класс разметки обычно создается при создании кода во время компиляции XAML.

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

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

Значения XAML

namespace

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

classname

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

Зависимости

x:Class может указываться только в корневом элементе создания XAML. x:Class недопустима в любом объекте, имеющем родительский элемент в создании XAML. Дополнительные сведения см. в разделе [MS-XAML] Раздел 4.3.1.6.

Заметки

Значение namespace может содержать дополнительные точки для организации связанных пространств имен в иерархии имен, что является распространенным приемом в программировании .NET Framework. Только последняя точка в строке значений x:Class интерпретируется как разделитель между namespace и classname. Класс, который используется в качестве x:Class, не может быть вложенным классом Вложенные классы запрещены, так как определение значения точек для строк x:Class является неоднозначным, если разрешены вложенные классы.

В существующих моделях программирования, где используется x:Class, x:Class является необязательным в том смысле, что вполне допустимо иметь XAML-страницу без выделенного кода. Однако такая возможность взаимодействует с действиями построения в соответствии с реализацией платформ, использующих XAML. На возможности x:Class также влияют роли различных классификаций определяемого XAML содержимого в модели приложения и в соответствующих действиях построения. Если в коде XAML объявляется событие, обрабатывающее значения атрибута, или создаются пользовательские элементы, в которых определяющие классы находятся в классе с выделенным кодом, необходимо предоставить ссылку директивы x:Class (или x:Subclass) на соответствующий класс для выделенного кода.

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

Файл с выделенным кодом для определения страницы или приложения должен содержаться в файле кода, включаемом в состав проекта, в котором создается скомпилированное приложение и включает компиляцию разметки. Необходимо соблюдать правила именования для классов CLR. Дополнительные сведения см. в разделе Руководство по разработке библиотек классов. По умолчанию класс кода программной части должен объявляться с модификатором public; при необходимости, однако, он может быть определен с различными уровнями доступа с помощью Директива x:ClassModifier.

Такая точная интерпретация атрибута x:Class применяется только в реализации XAML на основе CLR, в частности в службах XAML .NET Framework. Другие реализации XAML, не основанные на среде CLR и не использующие службы XAML .NET Framework, могут использовать другую формулу разрешения для подключения разметки XAML и резервного кода времени выполнения. Дополнительные сведения о более общих интерпретациях x:Class см. по ссылке [MS-XAML].

На определенном уровне архитектуры значение x:Class является неопределенным в службах XAML платформы .NET Framework. Это происходит потому, что службы XAML .NET Framework не указывают модель программирования, которая используется для подключения разметки XAML и вспомогательного кода. Дополнительные случаи использования директивы x:Class могут реализовываться конкретными платформами, которые используют модели программирования или модели приложений для определения способа соединения разметки XAML и кода программной части среды CLR. Каждая структура может иметь собственные действия построения, включающие некоторое поведение или отдельные компоненты, которые должны быть включены в среду построения. Внутри платформы действия построения также зависят от конкретного языка среды CLR, который используется для кода.

x:Class в модели программирования WPF

В приложениях WPF и модели приложения WPF x:Class может объявляться в качестве атрибута любого элемента, который является корнем файла XAML и компилируется (если XAML включен в проект приложения WPF с действием построения Page), а также для корня Application в определении приложения скомпилированного приложения WPF. Объявление атрибута x:Class для элемента, отличного от корневого элемента страницы или приложения, а также для любого нескомпилированного файла WPF XAML приводит к ошибке времени компиляции при использовании компилятора WPF XAML из .NET Framework 3.0 и .NET Framework 3.5. Сведения о других аспектах обработки x:Class в WPF см. в разделе Код программной части и XAML в WPF.

x:Class для Windows Workflow Foundation

В случае с Windows Workflow Foundation x:Class называет класс пользовательского действия, полностью состоящий из XAML, или разделяемого класса XAML-страницы для конструктора действий с файлом программной части.

Заметки об использовании Silverlight.

x:Class для Silverlight описывается отдельно. Дополнительные сведения см. в разделе Возможности пространства имен языка XAML (x:) (Silverlight).

См. также

Ссылки

Директива x:Subclass

Директива x:ClassModifier

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

Код XAML и пользовательские классы для WPF

Другие ресурсы

Типы, перенесенные из WPF в System.Xaml