Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
</Page>
Первое пространство имен 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]
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
<Page
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:<b>XamlSpecificStuff</b>="http://schemas.microsoft.com/winfx/2006/xaml">
<Grid>
<!-- Кнопка со специальным содержимым -->
<Button <b>XamlSpecificStuff</b>:Name="button1" Height="100" Width="100">
<Ellipse Fill="Green" Height="50" Width="50"/>
</Button>
</Grid>
</Page>
Очевидный недостаток определения длинных префиксов для пространств имен XML связан с тем, что
XamlSpecificStuff
XamlSpecificStuff
х
Помимо ключевых слов
x:Name
х:Class
x:Code
http://schemas.microsoft.com/winfх/2006/xaml

В дополнение к двум указанным объявлениям пространств имен XML можно (а иногда и нужно) определить дополнительные префиксы дескрипторов в открывающем элементе документа XAML. Обычно так поступают, когда необходимо описать в XAML класс .NET Core, определенный во внешней сборке.
Например, предположим, что было построено несколько специальных элементов управления WPF, которые упакованы в библиотеку по имени
MyControls.dll
MyControls.dll
clr-namespace
assembly
myCtrls
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
<b> xmlns:myCtrls="clr-namespace:MyControls;assembly=MyControls"</b>
Title="MainWindow" Height="350" Width="525">
<Grid>
<b> <myCtrls:MyCustomControl /></b>
</Grid>
</Window>
Маркеру
clr-namespace
assembly
*.dll