Пространства имен XAML и их сопоставлениеXAML namespaces and namespace mapping

В данном разделе объясняется сопоставление пространств имен XML/XAML (xmlns) в корневом элементе большинства файлов XAML.This topic explains the XML/XAML namespace (xmlns) mappings as found in the root element of most XAML files. Здесь также описывается, как выполнять подобное сопоставление для настраиваемых типов и сборок.It also describes how to produce similar mappings for custom types and assemblies.

Связь пространств имен XAML с библиотеками определений кода и типовHow XAML namespaces relate to code definition and type libraries

Как в рамках основного назначения, так и в применении к программированию приложений среды выполнения Windows язык XAML используется для объявления объектов, свойств этих объектов и отношений между объектами и свойствами, выраженных в виде иерархий.Both in its general purpose and for its application to Windows Runtime app programming, XAML is used to declare objects, properties of those objects, and object-property relationships expressed as hierarchies. Объекты, которые вы объявляете в XAML, резервируются библиотеками типов или другими представлениями, которые определяются другими методиками и языками программирования.The objects you declare in XAML are backed by type libraries or other representations that are defined by other programming techniques and languages. Эти библиотеки могут быть:These libraries might be:

  • Встроенным набором объектов для среды выполнения Windows.The built-in set of objects for the Windows Runtime. Это фиксированный набор объектов, для доступа к которым из XAML применяется внутреннее сопоставление типов и логика активации.This is a fixed set of objects, and accessing these objects from XAML uses internal type-mapping and activation logic.
  • Распространяемыми библиотеками, поставляемыми Microsoft либо сторонними поставщиками.Distributed libraries that are provided either by Microsoft or by third parties.
  • Библиотеками, представляющими определение элемента управления стороннего поставщика, который входит в ваше приложение и вторично распространяется вашим пакетом.Libraries that represent the definition of a third-party control that your app incorporates and your package redistributes.
  • Вашей собственной библиотекой, которая является частью вашего проекта и содержит некоторые или все пользовательские определения кода.Your own library, which is part of your project and which holds some or all of your user code definitions.

Резервный тип связан с конкретными определениями пространства имен XAML.Backing type info is associated with particular XAML namespace definitions. Платформы XAML, такие как среда выполнения Windows, могут объединять несколько сборок и несколько пространств имен кода, сопоставляемых с одним пространством имен XAML.XAML frameworks such as the Windows Runtime can aggregate multiple assemblies and multiple code namespaces to map to a single XAML namespace. Это задействует концепцию словаря XAML, который охватывает более широкую часть платформы или технологию программирования.This enables the concept of a XAML vocabulary that covers a larger programming framework or technology. Словарь XAML может быть достаточно обширным, например, большая часть языка XAML, задокументированная для приложений среды выполнения Windows, составляет один словарь XAML.A XAML vocabulary can be quite extensive—for example, most of the XAML documented for Windows Runtime apps in this reference constitutes a single XAML vocabulary. Словарь XAML также можно расширять путем добавления типов в определения резервного кода. При этом необходимо включить типы в пространства имен кода, которые уже используются в качестве источников сопоставленного пространства имен для словаря XAML.A XAML vocabulary is also extensible: you extend it by adding types to the backing code definitions, making sure to include the types in code namespaces that are already used as mapped namespace sources for the XAML vocabulary.

Процессор XAML может искать типы и члены в резервных сборках, связанных с этим пространством имен XAML, когда он создает представление объекта среды выполнения.A XAML processor can look up types and members from the backing assemblies associated with that XAML namespace when it creates a run-time object representation. Поэтому XAML удобен в качестве способа формализации и обмена определениями поведения объекта при создании, и поэтому XAML используется в качестве техники определения пользовательского интерфейса для приложений UWP.This is why XAML is useful as a way to formalize and exchange definitions of object-construction behavior, and why XAML is used as a UI definition technique for a UWP app.

Пространства имен XAML при стандартном использовании исправлений XAMLXAML namespaces in typical XAML markup usage

В корневом элементе XAML-файла почти всегда объявляется пространство имен XAML по умолчанию. A XAML file almost always declares a default XAML namespace in its root element. Пространство имен XAML по умолчанию определяет, какие элементы можно объявить без указания уточняющего префикса.The default XAML namespace defines which elements you can declare without qualifying them by a prefix. Например, если вы объявляете элемент <Balloon />, средство синтаксического анализа XAML предполагает, что элемент Balloon существует и является действительным в пространстве имен XAML, используемом по умолчанию.For example, if you declare an element <Balloon />, a XAML parser will expect that an element Balloon exists and is valid in the default XAML namespace. Если же Balloon не входит в определенное пространство имен XAML по умолчанию, необходимо указывать имя этого элемента с префиксом, например <party:Balloon />.In contrast, if Balloon is not in the defined default XAML namespace, you must instead qualify that element name with a prefix, for example <party:Balloon />. Префикс указывает на то, что элемент существует в пространстве имен XAML, отличном от пространства имен по умолчанию, и вам нужно сопоставить пространство имен XAML с префиксом party перед тем, как использовать данный элемент.The prefix indicates that the element exists in a different XAML namespace than the default namespace, and you must map a XAML namespace to the prefix party before you can use this element. Пространства имен XAML относятся к определенному элементу, на котором они были объявлены, а также к любому элементу, который содержится в этом элементе в структуре XAML.XAML namespaces apply to the specific element on which they are declared, and also to any element that is contained by that element in the XAML structure. По этой причине пространства имен XAML практически всегда объявляются на корневых элементах XAML-файла, чтобы воспользоваться преимуществами этого наследования.For this reason, XAML namespaces are almost always declared on root elements of a XAML file to take advantage of this inheritance.

Объявления пространства имен XAML по умолчанию и на языке XAMLThe default and XAML language XAML namespace declarations

В корневом элементе большинства XAML-файлов находятся два объявления xmlns.Within the root element of most XAML files, there are two xmlns declarations. Первое объявление сопоставляет пространство имен XAML как значение по умолчанию: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"The first declaration maps a XAML namespace as the default: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

Этот же идентификатор пространства имен XAML использовался в нескольких предшествующих технологиях Microsoft, которые также используют XAML в качестве формата разметки определений пользовательского интерфейса.This is the same XAML namespace identifier used in several predecessor Microsoft technologies that also use XAML as a UI definition markup format. Тот же самый идентификатор используется преднамеренно. Это удобно при переносе ранее определенного пользовательского интерфейса в приложение среды выполнения Windows на C++, C# или Visual Basic.The use of the same identifier is deliberate, and is helpful when you migrate previously defined UI to a Windows Runtime app using C++, C#, or Visual Basic.

Второе объявление сопоставляет отдельное пространство имен XAML для элементов языка, определенных XAML, сопоставляя его (обычно) с префиксом "x:": xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"The second declaration maps a separate XAML namespace for the XAML-defined language elements, mapping it (typically) to the "x:" prefix: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Это значение xmlns и префикс x:, с которым оно сопоставляется, также идентичны определениям, использованным в нескольких предшествующих технологиях Microsoft, использующих XAML.This xmlns value, and the "x:" prefix it is mapped to, is also identical to the definitions used in several predecessor Microsoft technologies that use XAML.

Взаимосвязь между двумя этими объявлениями заключается в том, что XAML является языковым определением, а среда выполнения Windows является реализацией, использующей XAML в качестве языка, определяя конкретный словарь, в котором ее типы указываются на языке XAML.The relationship between these declarations is that XAML is a language definition, and the Windows Runtime is one implementation that uses XAML as a language and defines a specific vocabulary where its types are referenced in XAML.

Язык XAML определяет конкретные языковые элементы, каждый из которых должен быть доступен через реализации процессора XAML, работающие на фоне пространства имен XAML.The XAML language specifies certain language elements, and each of these should be accessible through XAML processor implementations working against the XAML namespace. Соглашению о сопоставлении префикса x: для пространства имен XAML на XAML следуют шаблоны проекта, пример кода и документация для языковых компонентов.The "x:" mapping convention for the XAML language XAML namespace is followed by project templates, sample code, and the documentation for language features. Пространство имен языка XAML определяет несколько часто используемых компонентов, которые необходимы даже для основных приложений среды выполнения Windows на C++, C# или Visual Basic.The XAML language namespace defines several commonly used features that are necessary even for basic Windows Runtime apps using C++, C#, or Visual Basic. Например, чтобы присоединить любой файл кода программной части к файлу XAML через разделяемый класс, необходимо назвать этот класс так же, как атрибут x:Class в корневом элементе соответствующего файла XAML.For example, to join any code-behind to a XAML file through a partial class, you must name that class as the x:Class attribute in the root element of the relevant XAML file. Или же любой элемент, определенный на странице XAML как ключевой ресурс в Справочниках по ResourceDictionary и ресурсу XAML, должен иметь атрибут x:Key, установленный для данного элемента объекта.Or, any element as defined in a XAML page as a keyed resource in a ResourceDictionary and XAML resource references must have the x:Key attribute set on the object element in question.

Пространства имен кода, которые сопоставляются с пространством имен XAML по умолчаниюCode namespaces that map to the default XAML namespace

Следующие аспекты — это список пространств имен кода, которые в настоящее время сопоставлены с пространством имен XAML по умолчанию.The folowing is a list of code namespaces that are currently mapped to the default XAML namespace.

  • Windows.UIWindows.UI
  • Windows.UI.XamlWindows.UI.Xaml
  • Windows.UI.Xaml.AutomationWindows.UI.Xaml.Automation
  • Windows.UI.Xaml.Automation.PeersWindows.UI.Xaml.Automation.Peers
  • Windows.UI.Xaml.Automation.ProviderWindows.UI.Xaml.Automation.Provider
  • Windows.UI.Xaml.Automation.TextWindows.UI.Xaml.Automation.Text
  • Windows.UI.Xaml.ControlsWindows.UI.Xaml.Controls
  • Windows.UI.Xaml.Controls.PrimitivesWindows.UI.Xaml.Controls.Primitives
  • Windows.UI.Xaml.DataWindows.UI.Xaml.Data
  • Windows.UI.Xaml.DocumentsWindows.UI.Xaml.Documents
  • Windows.UI.Xaml.InputWindows.UI.Xaml.Input
  • Windows.UI.Xaml.InteropWindows.UI.Xaml.Interop
  • Windows.UI.Xaml.MarkupWindows.UI.Xaml.Markup
  • Windows.UI.Xaml.MediaWindows.UI.Xaml.Media
  • Windows.UI.Xaml.Media.AnimationWindows.UI.Xaml.Media.Animation
  • Windows.UI.Xaml.Media.ImagingWindows.UI.Xaml.Media.Imaging
  • Windows.UI.Xaml.Media.Media3DWindows.UI.Xaml.Media.Media3D
  • Windows.UI.Xaml.NavigationWindows.UI.Xaml.Navigation
  • Windows.UI.Xaml.ResourcesWindows.UI.Xaml.Resources
  • Windows.UI.Xaml.ShapesWindows.UI.Xaml.Shapes
  • Windows. UI. XAML. ThreadingWindows.UI.Xaml.Threading
  • Windows.UI.TextWindows.UI.Text

Другие пространства имен XAMLOther XAML namespaces

Помимо пространства имен по умолчанию и пространства имен языка XAML x: существуют и другие сопоставленные пространства имен XAML в первоначальном языке XAML, использованном по умолчанию для приложений в Microsoft Visual Studio.In addition to the default namespace and the XAML language XAML namespace "x:", you may also see other mapped XAML namespaces in the initial default XAML for apps as generated by Microsoft Visual Studio.

d: ( http://schemas.microsoft.com/expression/blend/2008 )d: (http://schemas.microsoft.com/expression/blend/2008)

Пространство имен XAML d: предназначено для поддержки конструктора — в частности, в рабочих областях конструирования XAML Microsoft Visual Studio.The "d:" XAML namespace is intended for designer support, specifically designer support in the XAML design surfaces of Microsoft Visual Studio. Пространство имен XAML d: включает атрибуты конструктора или времени разработки в элементах XAML.The" d:" XAML namespace enables designer or design-time attributes on XAML elements. Эти атрибуты конструктора влияют только на аспекты разработки, связанные с поведением XAML.These designer attributes affect only the design aspects of how XAML behaves. Атрибуты конструктора игнорируются, когда тот же XAML загружается средством синтаксического анализа XAML среды выполнения Windows при запуске приложения.The designer attributes are ignored when the same XAML is loaded by the Windows Runtime XAML parser when an app runs. В целом атрибуты конструктора можно применять в любом элементе XAML, но на практике применять атрибут конструктора самостоятельно целесообразно только в определенных случаях.Generally, the designer attributes are valid on any XAML element, but in practice there are only certain scenarios where applying a designer attribute yourself is appropriate. В частности, многие из атрибутов конструктора предназначены для улучшения взаимодействия с контекстами данных и источниками данных, если вы работаете с XAML и кодом, которые используют привязку данных.In particular, many of the designer attributes are intended to provide a better experience for interacting with data contexts and data sources while you are developing XAML and code that use data binding.

  • Атрибуты d:DesignHeight и d:DesignWidth Эти атрибуты иногда применяются к корню XAML-файла, который создает для вас Visual Studio или другая поверхность конструктора XAML.d:DesignHeight and d:DesignWidth attributes: These attributes are sometimes applied to the root of a XAML file that Visual Studio or another XAML designer surface creates for you. Например, эти атрибуты задаются в корне UserControl XAML, создаваемого при добавлении нового UserControl в проект приложения.For example, these attributes are set on the UserControl root of the XAML that is created if you add a new UserControl to your app project. Эти атрибуты упрощают разработку композиции содержимого XAML, и вы можете предвидеть ограничения разметки, которые могут существовать, если это содержимое XAML используется для экземпляра элемента управления или другой части более крупной страницы пользовательского интерфейса.These attributes make it easier to design the composition of the XAML content, so that you have some anticipation of the layout constraints that might exist once that XAML content is used for a control instance or other part of a larger UI page.

Примечание    . При переносе XAML из Microsoft Silverlight эти атрибуты могут находиться в корневых элементах, представляющих всю страницу пользовательского интерфейса.Note  If you are migrating XAML from Microsoft Silverlight you might have these attributes on root elements that represent an entire UI page. Возможно, в этом случае атрибуты потребуется удалить.You might want to remove the attributes in this case. Другие функции конструкторов XAML, такие как имитатор, возможно, более полезны для разработки макетов страниц, которые обрабатывают состояния масштабирования и просмотра лучше, чем макет страницы фиксированного размера, использующий d:DesignHeight и d:DesignWidth.Other features of the XAML designers such as the simulator are probably more useful for designing page layouts that handle scaling and view states well than is a fixed size page layout using d:DesignHeight and d:DesignWidth.

  • Атрибут d:DataContext Этот атрибут можно задать в корне страницы или элементе управления для переопределения любого явного или унаследованного DataContext, в противном случае находящегося в объекте.d:DataContext attribute: You can set this attribute on a page root or a control to override any explicit or inherited DataContext that object otherwise has.
  • Атрибут d:DesignSource Указывает источник данных времени разработки для CollectionViewSource, переопределяя Source.d:DesignSource attribute: Specifies a design-time data source for a CollectionViewSource, overriding Source.
  • Расширения разметки d:DesignInstance и d:DesignData Эти расширения разметки используются для предоставления ресурсов данных времени разработки для d:DataContext или d:DesignSource.d:DesignInstance and d:DesignData markup extensions: These markup extensions are used to provide the design-time data resources for either d:DataContext or d:DesignSource. В этом разделе не приводится подробное описание использования ресурсов данных времени разработки.We won't fully document how to use design-time data resources here. Подробнее см. в разделе Атрибуты времени разработки.For more info, see Design-Time Attributes. Примеры использования см. в разделе Демонстрационные данные в рабочей области конструирования и для создания прототипов.For some usage examples, see Sample data on the design surface, and for prototyping.

MC: ( http://schemas.openxmlformats.org/markup-compatibility/2006 )mc: (http://schemas.openxmlformats.org/markup-compatibility/2006)

mc: обозначает и поддерживает режим совместимости исправлений для чтения XAML." mc:" indicates and supports a markup compatibility mode for reading XAML. Обычно префикс d: связан с атрибутом mc:Ignorable.Typically, the "d:" prefix is associated with the attribute mc:Ignorable. Данный метод позволяет средствам синтаксического анализа XAML среды выполнения игнорировать атрибуты конструктора в d:.This technique enables run-time XAML parsers to ignore the design attributes in "d:".

local: и common:local: and common:

Префикс local: часто задается автоматически в составе XAML-страниц для проекта приложения UWP, создаваемого по шаблону."local:" is a prefix that is often mapped for you within the XAML pages for a templated UWP app project. Он ссылается на то же пространство имен, которое создается для размещения атрибута x:Class и кода для всех XAML-файлов, включая app.xaml.It's mapped to refer to the same namespace that's created to contain the x:Class attribute and code for all the XAML files including app.xaml. Если в этом пространстве имен вы определите все пользовательские классы, которые будут использоваться в XAML, то префикс local: позволит ссылаться на ваши настраиваемые типы в коде XAML.So long as you define any custom classes you want to use in XAML in this same namespace, you can use the local: prefix to refer to your custom types in XAML. В проектах приложений UWP, создаваемых по шаблону, используется связанный префикс common:.A related prefix that comes from a templated UWP app project is common:. Он ссылается на вложенное пространство имен Common, которое содержит служебные классы, например конвертеры и команды, и вы можете найти определения в папке Common в представлении Обозреватель решений.This prefix refers to a nested "Common" namespace that contains utility classes such as converters and commands, and you can find the definitions in the Common folder in the Solution Explorer view.

vsm:vsm:

Не используется.Do not use. vsm: — это префикс, который иногда встречается в старых шаблонах XAML, импортированных из других технологий Microsoft."vsm:" is a prefix that is sometimes seen in older XAML templates imported from other Microsoft technologies. Пространство имен первоначально решало проблему средств устаревших пространств имен.The namespace originally addressed a legacy namespace tooling issue. Вы должны удалить определения пространства имен XAML для vsm: в любом коде XAML, который вы применяете для среды выполнения Windows, и вместо префикса для VisualState, VisualStateGroup и связанных объектов использовать пространство имен XAML по умолчанию.You should delete XAML namespace definitions for "vsm:" in any XAML you use for the Windows Runtime, and change any prefix usages for VisualState, VisualStateGroup and related objects to use the default XAML namespace instead. Подробнее о переносе кода XAML: Перенос кода XAML для Silverlight или WPF в приложение среды выполнения Windows.For more info on XAML migration, see Migrating Silverlight or WPF XAML/code to a Windows Runtime app.

Сопоставление настраиваемых типов с пространствами имен XAML и префиксамиMapping custom types to XAML namespaces and prefixes

Вы можете сопоставить пространство имен XAML таким образом, чтобы можно было использовать XAML для доступа к вашим настраиваемым типам.You can map a XAML namespace so that you can use XAML to access your own custom types. Другими словами, вы сопоставляете пространство имен кода в том виде, как оно существует в представлении кода, которое определяет настраиваемый тип, и присваиваете ему пространство имен XAML наряду с префиксом для использования.In other words, you are mapping a code namespace as it exists in a code representation that defines the custom type, and assigning it a XAML namespace along with a prefix for usage. Настраиваемые типы для XAML можно определить либо на языке .NET Microsoft (C# или Microsoft Visual Basic), либо на C++.Custom types for XAML can be defined either in a Microsoft .NET language (C# or Microsoft Visual Basic) or in C++. Сопоставление производится путем определения префикса xmlns.The mapping is made by defining an xmlns prefix. Например, xmlns:myTypes определяет новое пространство имен XAML, доступ к которому осуществляется через определение префиксов для всех применений с токеном myTypes:.For example, xmlns:myTypes defines a new XAML namespace that is accessed by prefixing all usages with the token myTypes:.

Определение xmlns включает значение и наименование префикса.An xmlns definition includes a value as well as the prefix naming. Это значение является строкой внутри кавычек, которая идет после знака равенства.The value is a string that goes inside quotation marks, following an equal sign. Обычное соглашение XML заключается в том, чтобы связать пространство имен XML с универсальным кодом ресурса (URI), так что соглашение существует для целей уникальности и идентификации.A common XML convention is to associate the XML namespace with a Uniform Resource Identifier (URI), so that there is a convention for uniqueness and identification. Вы также можете видеть это соглашение для пространства имен XAML по умолчанию и пространства имен XAML на языке XAML, а также для более редких пространств имен XAML, которые используют XAML среды выполнения Windows.You also see this convention for the default XAML namespace and the XAML language XAML namespace, as well as for some lesser-used XAML namespaces that are used by Windows Runtime XAML. Но для пространства имен XAML, которое сопоставляет настраиваемые типы, вместо указания универсального кода ресурса (URI) определение префикса начинается с токена using:.But for a XAML namespace that maps custom types, instead of specifying a URI, you begin the prefix definition with the token "using:". После using: вы присваиваете имя пространству имен кода.Following the "using:" token, you then name the code namespace.

Например, чтобы сопоставить префикс "Custom1", который позволяет ссылаться на пространство имен "Кустомклассес", и использовать классы из этого пространства имен или сборки в качестве объектных элементов в XAML, страница XAML должна содержать следующее сопоставление с корневым элементом: xmlns:custom1="using:CustomClasses"For example, to map a "custom1" prefix that enables you to reference a "CustomClasses" namespace, and use classes from that namespace or assembly as object elements in XAML, your XAML page should include the following mapping on the root element: xmlns:custom1="using:CustomClasses"

Разделяемые классы той же самой области страницы не должны сопоставляться.Partial classes of the same page scope do not need to be mapped. Например, вам не нужны префиксы для ссылок на любые обработчики событий, которые вы определили для обработки событий из определения пользовательского интерфейса XAML вашей страницы.For example, you don't need prefixes to reference any event handlers that you defined for handling events from the XAML UI definition of your page. Также многие из стартовых страниц XAML проектов, созданных в Visual Studio для приложений среды выполнения Windows на C++, C# или Visual Basic, уже сопоставляют префикс local:, который ссылается на пространство имен, определенное по умолчанию для проекта, с пространством имен, используемым определениями разделяемого класса.Also, many of the starting XAML pages from Visual Studio generated projects for a Windows Runtime app using C++, C#, or Visual Basic already map a "local:" prefix, which references the project-specified default namespace and the namespace used by partial class definitions.

Языковые правила среды CLRCLR language rules

Если вы пишете резервный код на .NET (C# или Microsoft Visual Basic), вы, возможно, применяете соглашения, которые используют точку (".") как часть названий пространств имен для создания концептуальной иерархии пространств имен кода.If you are writing your backing code in a .NET language (C# or Microsoft Visual Basic), you might be using conventions that use a dot (".") as part of namespace names to create a conceptual hierarchy of code namespaces. Если ваше определение пространства имен содержит точку, тогда точка должна быть частью значения, которое вы указываете после токена using:.If your namespace definition contains a dot, the dot should be part of the value you specify after the "using:" token.

Если ваш файл кода программной части или файл определения кода написан на языке C++, существуют определенные соглашения, которые по-прежнему следуют языковым формам среды CLR, поэтому в синтаксисе XAML нет расхождений.If your code-behind file or code definition file is a C++ file, there are certain conventions that still follow the common language runtime (CLR) language form, so that there is no difference in the XAML syntax. Если вы объявляете вложенные пространства имен в C++, то в качестве разделителя между последовательными вложенными строками пространства имен нужно использовать ".", а не "::" при определении значения, следующего за токеном using:.If you declare nested namespaces in C++, the separator between the successive nested namespace strings should be "." rather than "::" when you specify the value that follows the "using:" token.

Не используйте вложенные типы (например, перечисление, вложенное в класс), когда код определяется для использования в XAML.Don't use nested types (such as nesting an enumeration within a class) when you define your code for use with XAML. Вложенные типы не поддерживают вычисление.Nested types can't be evaluated. Средство синтаксического анализа XAML не имеет возможности отличить точку, отделяющую имя вложенного типа, от точки, отделяющей часть имени пространства имен.There's no way for the XAML parser to distinguish that a dot is part of the nested type name rather than part of the namespace name.

Настраиваемые типы и сборкиCustom types and assemblies

Имя сборки, которая определяет резервные типы в пространстве имен XAML, не указывается при сопоставлении.The name of the assembly that defines the backing types for a XAML namespace is not specified in the mapping. Логика, для которой доступны сборки, контролируется на уровне определения приложения и является частью основных принципов развертывания и защиты приложения.The logic for which assemblies are available is controlled at the app-definition level and is part of basic app deployment and security principles. Объявляйте любую сборку, которую вы хотите включить в качестве источника определения кода для XAML, как зависимую сборку в параметрах проекта.Declare any assembly that you want included as a code-definition source for XAML as a dependent assembly in project settings. Подробнее об этом см. в разделе Создание компонентов среды выполнения Windows на C# и Visual Basic.For more info, see Creating Windows Runtime components in C# and Visual Basic.

Если вы ссылаетесь на настраиваемые типы из первичного определения приложения или определений страницы, эти типы доступны без дальнейшей конфигурации зависимой сборки, но вы по-прежнему должны сопоставить пространство имен кода, которое содержит эти типы.If you are referencing custom types from the primary app's application definition or page definitions, those types are available without further dependent assembly configuration, but you still must map the code namespace that contains those types. Обычным соглашением устанавливается сопоставление префикса local для пространства имен кода любой взятой страницы XAML, устанавливаемого по умолчанию.A common convention is to map the prefix "local" for the default code namespace of any given XAML page. Это соглашение часто включается в стартовые шаблоны проектов XAML.This convention is often included in starting project templates for XAML projects.

Присоединенные свойстваAttached properties

Когда вы упоминаете присоединенное свойство, часть его имени, относящаяся к типу владельца, должна находиться в пространстве имен XAML по умолчанию либо снабжаться префиксом.If you are referencing attached properties, the owner-type portion of the attached property name must either be in the default XAML namespace or be prefixed. Атрибуты редко получают префиксы отдельно от своих элементов, однако в данном случае это иногда необходимо, особенно для пользовательских присоединенных свойств.It's rare to prefix attributes separately from their elements but this is one case where it's sometimes required, particularly for a custom attached property. Подробнее см. в разделе Пользовательские присоединенные свойства.For more info, see Custom attached properties.