Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описываются сопоставления пространства имен XML/XAML (xmlns), представленные в корневом элементе большинства файлов XAML. В нем также описывается, как создавать аналогичные сопоставления для пользовательских типов и сборок.
Связь пространств имен XAML с библиотеками определений кода и типов
Как в общем назначении, так и в программировании приложения среды выполнения Windows XAML используется для объявления объектов, свойств этих объектов и связей свойств объекта, выраженных как иерархии. Объекты, объявленные в XAML, поддерживаются библиотеками типов или другими представлениями, определенными другими методами программирования и языками. Эти библиотеки могут быть следующими:
- Встроенный набор объектов для среды выполнения Windows. Это фиксированный набор объектов и доступ к этим объектам из XAML использует внутреннюю логику сопоставления типов и активации.
- Распределенные библиотеки, предоставляемые корпорацией Майкрософт или сторонними лицами.
- Библиотеки, представляющие определение стороннего элемента управления, который включается вашим приложением и распространяется вашим пакетом.
- Ваша собственная библиотека, которая входит в проект и содержит некоторые или все определения пользовательского кода.
Сведения о резервном типе связаны с определенными определениями пространства имен XAML. Платформы XAML, такие как среда выполнения Windows, могут объединять несколько сборок и несколько пространств имен кода для сопоставления с одним пространством имен XAML. Это позволяет использовать концепцию словаря XAML, охватывающего большую платформу программирования или технологию. Словарь XAML может быть довольно обширным — например, большинство XAML, задокументированных для приложений на платформе Windows Runtime в данном руководстве, представляют собой единый словарь XAML. Словарь XAML также расширяем: вы расширяете его, добавляя типы в определения поддерживающего кода, обязательно добавляя типы в пространства имен кода, которые уже используются в качестве источников отображаемого пространства имен для словаря XAML.
Обработчик XAML может искать типы и элементы из резервных сборок, связанных с этим пространством имен XAML при создании представления объекта во время выполнения. Именно поэтому XAML полезен в качестве способа формализации и обмена определениями поведения создания объектов и почему XAML используется в качестве метода определения пользовательского интерфейса для приложения среды выполнения Windows.
Пространства имен XAML в типичном использовании разметки XAML
XAML-файл почти всегда объявляет пространство имен XAML по умолчанию в корневом элементе. Пространство имен XAML по умолчанию определяет, какие элементы можно объявить без их определения префиксом. Например, если вы объявляете элемент, средство синтаксического анализа XAML ожидает, что элемент <Balloon />Balloon существует и действителен в пространстве имен XAML по умолчанию. В отличие от этого, если воздушный шар не находится в определенном пространстве имен XAML по умолчанию, вместо этого необходимо указать это имя элемента с префиксом, например <party:Balloon />. Префикс указывает, что элемент существует в другом пространстве имен XAML, отличном от пространства имен по умолчанию, и необходимо сопоставить пространство имен XAML с стороной префикса, прежде чем использовать этот элемент. Пространства имен XAML применяются к конкретному элементу, на котором они объявлены, а также к любому элементу, содержаемому этим элементом в структуре XAML. По этой причине пространства имен XAML почти всегда объявляются на корневых элементах XAML-файла, чтобы воспользоваться этим наследованием.
Объявления пространства имен XAML по умолчанию и языка XAML
В корневом элементе большинства файлов XAML есть два объявления xmlns. Первое объявление сопоставляет пространство имен XAML по умолчанию: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
Это тот же идентификатор пространства имен XAML, используемый в нескольких предыдущих технологиях Майкрософт, которые также используют XAML в качестве формата разметки определения пользовательского интерфейса. Использование того же идентификатора намеренно и полезно при переносе ранее определенного пользовательского интерфейса в приложение среды выполнения Windows с помощью C++, C#или Visual Basic.
Второе объявление сопоставляет отдельное пространство имен XAML для элементов языка, определяемых XAML, сопоставляя его (обычно) с префиксом x:: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Это значение xmlns и префикс x:, с которым он сопоставляется, также идентичен определениям, используемым в нескольких предшественниках технологий Майкрософт, использующих XAML.
Связь между этими объявлениями заключается в том, что XAML является определением языка, и среда выполнения Windows является одной реализацией, которая использует XAML в качестве языка и определяет определенный словарь, на который ссылаются его типы в XAML.
Язык XAML задает определенные языковые элементы, и каждый из них должен быть доступен с помощью реализаций обработчика XAML, работающих с пространством имен XAML. Конвенция сопоставления "x:" для пространства имен XAML языка XAML используется в шаблонах проектов, образцах кода и документации по функциям языка. Пространство имен языка XAML определяет несколько часто используемых функций, которые необходимы даже для базовых приложений среды выполнения Windows. Например, чтобы присоединить любой код программной части к XAML-файлу через частичный класс, необходимо присвоить этому классу имя атрибута x:Class в корневом элементе соответствующего XAML-файла. Или любой элемент, определенный на странице XAML как ключевой ресурс в ResourceDictionary и ссылки на ресурсы XAML, должен иметь заданный атрибут x:Key для соответствующего элемента объекта.
Пространства имен кода, сопоставленные с пространством имен XAML по умолчанию
Ниже приведен список пространств имен кода, которые в настоящее время сопоставлены с пространством имен XAML по умолчанию.
- Windows.UI
- Windows.UI.Xaml
- Windows.UI.Xaml.Automation
- Windows.UI.Xaml.Automation.Peers
- Windows.UI.Xaml.Automation.Provider
- Windows.UI.Xaml.Automation.Text
- Windows.UI.Xaml.Controls
- Windows.UI.Xaml.Controls.Primitives
- Windows.UI.Xaml.Data
- Windows.UI.Xaml.Documents
- Windows.UI.Xaml.Input
- Windows.UI.Xaml.Interop
- Windows.UI.Xaml.Markup
- Windows.UI.Xaml.Media
- Windows.UI.Xaml.Media.Animation
- Windows.UI.Xaml.Media.Imaging
- Windows.UI.Xaml.Media.Media3D
- Windows.UI.Xaml.Navigation
- Ресурсы Windows.UI.Xaml.Resources
- Windows.UI.Xaml.Shapes
- Windows.UI.Xaml.Threading
- Windows.UI.Text
Другие пространства имен XAML
Помимо пространства имен по умолчанию и пространства имен XAML языка XAML "x:", вы также можете увидеть другие сопоставленные пространства имен XAML в начальной версии XAML по умолчанию для приложений, созданных Microsoft Visual Studio.
d: (http://schemas.microsoft.com/expression/blend/2008)
Пространство имен XAML "d:" предназначено для поддержки конструктора, в частности, для поддержки поверхностей дизайна XAML в Microsoft Visual Studio. Пространство имен XAML "d:" позволяет использовать атрибуты для проектирования или времени разработки в элементах XAML. Эти атрибуты конструктора влияют только на аспекты проектирования поведения XAML. Атрибуты дизайнера игнорируются, если тот же XAML загружается парсером XAML среды выполнения Windows при запуске приложения. Как правило, атрибуты конструктора допустимы для использования на любом элементе XAML, но на практике есть только определенные сценарии, в которых уместно применять атрибут конструктора самостоятельно. В частности, многие атрибуты конструктора предназначены для улучшения взаимодействия с контекстами данных и источниками данных при разработке XAML и кода, использующих привязку данных.
атрибуты d:DesignHeight и d:DesignWidth: Эти атрибуты иногда применяются к корню XAML-файла, который создает Visual Studio или другой XAML-конструктор. Например, эти атрибуты задаются в корне UserControl XAML, созданном при добавлении нового UserControl в вашем проекте приложения. Эти атрибуты упрощают структуру композиции содержимого XAML, чтобы можно было предвидеть ограничения макета, которые могут существовать после использования содержимого XAML для экземпляра элемента управления или другой части более крупной страницы пользовательского интерфейса.
Заметка Если вы переносите XAML из Microsoft Silverlight, возможно, у вас есть эти атрибуты на корневых элементах, представляющих всю страницу пользовательского интерфейса. В этом случае может потребоваться удалить атрибуты. Другие функции конструкторов XAML, например симулятор, скорее всего, более полезны для проектирования макетов страниц, обрабатывающих масштабирование и просмотр состояний, чем макет страницы фиксированного размера с помощью d:DesignHeight и d:DesignWidth.
атрибут d:DataContext: Этот атрибут можно задать в корне страницы или элементе управления, чтобы переопределить любой явный или унаследованный DataContext, который объект имеет.
атрибут d:DesignSource: Указывает источник данных во время разработки для CollectionViewSource, переопределяя источник.
расширения разметки d:DesignInstance и d:DesignData: Эти расширения разметки используются для предоставления ресурсов данных во время разработки для d:DataContext или d:DesignSource. Мы не полностью задокументируем, как использовать ресурсы данных во время разработки. Дополнительные сведения см. в разделе Атрибуты времени разработки. Некоторые примеры использования см. в "Примерах данных" на поверхности конструкции и для прототипирования.
mc: (http://schemas.openxmlformats.org/markup-compatibility/2006)
"mc:" указывает и поддерживает режим совместимости разметки для чтения XAML. Как правило, префикс "d:" связан с атрибутом mc:Ignorable. Этот метод позволяет синтаксизаторам XAML во время выполнения игнорировать атрибуты конструктора в "d:".
local: и common:
"local:" — это префикс, который часто автоматически сопоставляется на страницах XAML в шаблонном проекте приложения WinUI. Он сопоставляется с тем же пространством имен, которое создано для хранения атрибута x:Class и кода для всех файлов XAML, включая app.xaml. Если вы используете любые пользовательские классы, которые вы хотите применить в XAML в этом же пространстве имен, можно использовать префикс local: для ссылки на эти пользовательские типы в XAML. Связанный префикс, поступающий из шаблона проекта приложения WinUI, является общим:. Этот префикс ссылается на вложенное пространство имен Common, содержащее служебные классы, такие как преобразователи и команды, и вы можете найти определения в папке Common в представлении обозревателя решений .
vsm:
Не следует использовать. Vsm:" — это префикс, который иногда наблюдается в старых шаблонах XAML, импортированных из других технологий Майкрософт. Изначально это пространство имен было создано для решения проблемы с устаревшими инструментами пространства имен. Необходимо удалить определения пространства имен XAML для vsm в любом XAML, используемом для среды выполнения Windows, и изменить любые использования префиксов для VisualState и VisualStateGroup, а также связанных с ними объектов, чтобы использовать пространство имен XAML по умолчанию. Дополнительные сведения о миграции XAML см. в статье Миграция Silverlight или WPF XAML/code в приложение среды выполнения Windows.
Сопоставление настраиваемых типов с пространствами имен и префиксами XAML
Вы можете сопоставить пространство имен XAML, чтобы использовать XAML для доступа к собственным пользовательским типам. Другими словами, вы сопоставляете пространство имен кода, как оно существует в представлении кода, определяющем пользовательский тип, и присваиваете ему пространство имен XAML вместе с префиксом для использования. Пользовательские типы для XAML можно определить на языке Microsoft .NET (C# или Microsoft Visual Basic) или в C++. Сопоставление выполняется путем определения префикса xmlns . Например, xmlns:myTypes определяет новое пространство имен XAML, доступ к которому осуществляется посредством префиксирования всех использований маркером myTypes:.
Определение xmlns включает значение, а также именование префикса. Значение — это строка, которая находится внутри кавычек, после знака равенства. Общее соглашение XML заключается в связывании пространства имен XML с универсальным идентификатором ресурса (URI), поэтому существует соглашение об уникальности и идентификации. Это соглашение также используется для пространства имен XAML по умолчанию и языка XAML, а также для некоторых менее используемых пространств имен XAML, используемых в XAML Windows Runtime. Но для пространства имен XAML, которое сопоставляет пользовательские типы, вместо указания URI определение префикса начинается с маркера «using:». После маркера using: вы назовете пространство имен кода.
Например, чтобы сопоставить префикс custom1, позволяющий ссылаться на пространство имен CustomClasses и использовать классы из этого пространства имен или сборки в качестве элементов объекта в XAML, страница XAML должна содержать следующее сопоставление в корневом элементе: xmlns:custom1="using:CustomClasses"
Частичные классы той же области страницы не нужно сопоставлять. Например, для ссылки на обработчики событий, определенные для обработки событий из определения пользовательского интерфейса XAML страницы, не требуются префиксы. Кроме того, многие начальные страницы XAML из проектов, созданных в Visual Studio для приложений Windows Runtime, уже сопоставляют префикс "local:", который ссылается на пространство имен по умолчанию, заданное проектом, и пространство имен, используемое в определениях частичных классов.
Правила языка CLR
Если вы пишете код резервного копирования на языке .NET (C# или Microsoft Visual Basic), вы можете использовать соглашения, использующие точку (".") в составе имен имен, чтобы создать концептуальную иерархию пространств имен кода. Если определение пространства имен содержит точку, точка должна быть частью значения, указанного после маркера using:.
Если файл кода или файл определения кода является файлом C++, существуют определенные соглашения, которые по-прежнему соответствуют языковой форме среды CLR, чтобы не было различий в синтаксисе XAML. Если вы объявляете вложенные пространства имен в C++, разделитель между последовательными строками вложенных пространств имен должен быть "." вместо ":", если указать значение, следующее за токеном using:.
Не используйте вложенные типы (например, вложение перечисления в класс) при определении кода для использования с XAML. Не удается оценить вложенные типы. Средство синтаксического анализа XAML не позволяет различать, что точка является частью имени вложенного типа, а не частью имени пространства имен.
Пользовательские типы и сборки
Имя сборки, определяющей типы резервного копирования для пространства имен XAML, не указано в сопоставлении. Логика, для которой доступны сборки, контролируется на уровне определения приложения и является частью основных принципов развертывания и безопасности приложений. Объявите любую сборку, которую вы хотите включить в качестве источника определения кода для XAML в качестве зависимой сборки в параметрах проекта. Дополнительные сведения см. в статье "Создание компонентов среды выполнения Windows" в C# и Visual Basic.
Если вы ссылаетесь на пользовательские типы из определения основного приложения или определений страниц, эти типы доступны без дополнительной конфигурации сборки зависимостей, но по-прежнему необходимо сопоставить пространство имен кода, в котором содержатся эти типы. Обычное соглашение заключается в назначении префикса "local" для пространства имен кода по умолчанию для заданной страницы XAML. Это соглашение часто включается в начальные шаблоны проектов для проектов XAML.
Присоединенные свойства
Если вы ссылаетесь на присоединенные свойства, часть имени присоединенного свойства, относящаяся к типу владельца, должна находиться в пространстве имен XAML по умолчанию или быть префиксирована. Префиксы атрибутов редко префиксируются отдельно от их элементов, но это случай, когда это иногда необходимо, особенно для пользовательского присоединенного свойства. Дополнительные сведения см. в разделе "Пользовательские присоединенные свойства".
Связанные темы
Windows developer