Корневой элемент XAML-документа WPF (такой как
, или ) почти всегда будет ссылаться на два заранее определенные пространства имен XML: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
Первое пространство имен XML, http://schemas.microsoft.com/winfx/2006/xaml/presentation
*.xaml (System.Windows, System.Windows.Controls, System.Windows.Data, System.Windows.Ink, System.Windows.Media, System.Windows.Navigation и т.д.).Это отображение "один ко многим" в действительности жестко закодировано внутри сборок WPF (WindowsBase.dll
PresentationCore.dll и PresentationFramework.dll) с применением атрибута [XmlnsDefinition] уровня сборки. Например, если открыть браузер объектов Visual Studio и выбрать сборку PresentationCore.dll, то можно увидеть списки, подобные показанному ниже, в котором импортируется пространство имен System.Windows:[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/winfx/2006/xaml/presentation",
"System.Windows")]
Второе пространство имен XML, http://schemas.microsoft.com/winfx/2006/xaml
System.Windows.Markup:[assembly: XmlnsDefinition(
"http://schemas.microsoft.com/winfx/2006/xaml",
"System.Windows.Markup")]
Одно из правил любого корректно сформированного документа XML (не забывайте, что грамматика XAML основана на XML) состоит в том, что открывающий корневой элемент назначает одно пространство имен XML в качестве
х, однако он может быть любым уникальным маркером, таким как XamlSpecificStuff: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:XamlSpecificStuff
Очевидный недостаток определения длинных префиксов для пространств имен XML связан с тем, что XamlSpecificStuff
XamlSpecificStuff намного длиннее, давайте ограничимся х.Помимо ключевых слов x:Name
х:Class и x:Code пространство имен http://schemas.microsoft.com/winfх/2006/xaml также предоставляет доступ к дополнительным ключевым словам XAML, наиболее распространенные из которых кратко описаны в табл. 24.9.В дополнение к двум указанным объявлениям пространств имен XML можно (а иногда и нужно) определить дополнительные префиксы дескрипторов в открывающем элементе документа XAML. Обычно так поступают, когда необходимо описать в XAML класс .NET Core, определенный во внешней сборке.
Например, предположим, что было построено несколько специальных элементов управления WPF, которые упакованы в библиотеку по имени MyControls.dll
MyControls.dll, с использованием маркеров clr-namespace и assembly. Ниже приведен пример разметки, создающей префикс дескриптора по имени myCtrls, который может применяться для доступа к элементам управления в этой библиотеке: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"