В чем разница между пространством имен схемы и ссылкой на сборку в WPF? - PullRequest
5 голосов
/ 07 октября 2008

Почему в xaml есть два вида ссылок.

Один выглядит так:

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 

Но мой выглядит так:

xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"

Почему я не могу сделать это:

xmlns:local="http://myschema.mydomain.com/MyControlNamespace

Спасибо ixlettervariables за ответ. Вот подробное объяснение здесь

Ответы [ 2 ]

7 голосов
/ 07 октября 2008

Второй экземпляр - это, по сути, не отображенная, но явная ссылка на пространство имен в сборке. Первый экземпляр - это сопоставленная ссылка на пространство имен в некоторой сборке, на которую ссылается ваш проект. Пространства имен XAML и сопоставление пространств имен в MSDN объясняет это более подробно:

WPF определяет атрибут CLR, который используется процессорами XAML для сопоставления нескольких пространств имен CLR с одним пространством имен XML. Этот атрибут XmlnsDefinitionAttribute размещается на уровне сборки в исходном коде, который создает сборку. Исходный код сборки WPF использует этот атрибут для сопоставления различных общих пространств имен, таких как System.Windows и System.Windows.Controls, с пространством имен http://schemas.microsoft.com/winfx/2006/xaml/presentation.

Поэтому, добавив следующее в вашу сборку, вы можете сделать именно это:

[assembly:XmlnsDefinition("http://myschema.mydomain.com/MyControlNamespace", "My.Control.Namespace")]
0 голосов
/ 07 октября 2008

Ссылка на схему используется для стандартных элементов XAML, которые компилятор знает, как отобразить непосредственно во встроенные классы WPF.

Ссылка на пространство имен CLR - это подсказка для компилятора, который, по-видимому, и пространство имен следует искать при сопоставлении элементов XML в вашем пространстве имен пространства имен с классами CLR / WPF.

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