Путаница в значениях пространства имен XAML - PullRequest
1 голос
/ 26 июля 2010

Я прочитал, что значением пространства имен xml является любое произвольное строковое значение.

Но в следующем абзаце книги я прочитал, что: это пространство имен (xmlns: x) содержит обязательные языковые компоненты, определенные в спецификации xaml, например, возможность задать имя объекта.

Пожалуйста, кто-нибудь очистите меня от этой строки.

Поскольку эта строка не отображается ни в какое пространство имен или сборку или что-либо в .net framework, то как это пространство имен может содержать языковые компоненты или типы, такие как Name в x: Name?

<UserControl x:class="Chapter03.Page" 
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
  width="400" height="300">

            <Grid x:Name="LayoutRoot" Backgroud="White">
            </Grid>

</UserControl>

1 Ответ

3 голосов
/ 26 июля 2010

Наоборот, эти пространства имен имеют значение и сопоставляются с пространствами имен CLR. Например, сборка System.Windows содержит следующие атрибуты:

[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls.Primitives")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Data")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Documents")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Ink")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Input")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media.Animation")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media.Effects")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media.Imaging")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Media.Media3D")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Shapes")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Automation")]
[assembly: XmlnsDefinition("http://schemas.microsoft.com/winfx/2006/xaml", "System.Windows.Markup")]

Эти атрибуты сопоставляют пространство имен xml "http://scemas.microsoft.com/winfx/2006/xaml/presentation" с набором пространств имен CLR, определенных атрибутами.

Вы также можете явно ссылаться на пространство имен clr (без использования XmlnsDefinitionAttribute), используя строку типа «clr-namespace: System.Windows.Controls; assembly = System.Windows». XmlnsDefinitionAttribute позволяет сопоставить несколько пространств имен CLR в одном пространстве имен Xml.

xmlns: x - это специальное предварительно определенное пространство имен, содержащее функции языка XAML (например, x: Name, x: Key, x: Class и т. Д.), Которые не обязательно отображаются на типы CLR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...