WPF - Използва ли се вече ‹?Mapping ›?

По принцип си спомням, че имаше време, когато можехте да използвате следното: <?Mapping ... > (Изглежда, че вече не работи -- може би отхвърлено?)

Знам, че мога да картографирам моите XML пространства от имена така...

xmlns:xyzcon="clr-namespace:XYZ.Wpf.Controls"
xmlns:xyzcom="clr-namespace:XYZ.Wpf.Commands"

Но също така знам, че мога да картографирам моите XML пространства от имена по този начин (много по-чисто)

[assembly: XmlnsPrefix("http://schemas.mycompany.com/netfx/xaml/presentation", "xyz")]
[assembly: XmlnsDefinition("http://schemas.mycompany.com/netfx/xaml/presentation", "XYZ.Wpf.Controls")]
[assembly: XmlnsDefinition("http://schemas.mycompany.com/netfx/xaml/presentation", "XYZ.Wpf.Commands")]

което го прави много лесен за използване, защото вместо префикса l, lv и т.н. мога да накарам всички мои CLR-пространства от имена да сочат към едно и също XML пространство от имена...

xmlns:xyz="http://schemas.mycompany.com/netfx/xaml/presentation"

Този ред ми дава достъп до XYZ.Wpf.Controls и XYZ.Wpf.Commands. Проблемът е, че това работи само ако сборката вече е компилирана. Не мога да използвам този трик, когато работя в рамките на едно и също събрание.

По принцип, от едно и също приложение или сборка, искам да картографирам различни CLR пространства от имена към ЕДНОТО XML пространство от имена в глобален мащаб (по този начин в моето приложение просто трябва да включа това едно XML пространство от имена). Има ли начин да го направя?


person myermian    schedule 10.05.2011    source източник


Отговори (1)


Изглежда, че все още няма начин за картографиране на локални пространства от имена в WPF проект. Книгата Програмиране на WPF: Изграждане на Windows UI с Windows Presentation Foundation (публикуван през 2007 г.) гласи:

WPF проектите във Visual Studio не могат да използват пространства от имена, въведени от XmlnsDefinitionAttribute от XAML, които живеят в едно и също събрание. Ако искате да се обърнете към локално дефинирани типове, трябва да използвате алтернативния механизъм...

„Алтернативният механизъм“ е страховитият xmlns:local="..." за всяко пространство от имена.

Разбирам, че изпълняващият сбор (в този случай локалният WPF сбор) търси във всички референтни сборки както за XmlnsPrefixAttribute, така и за XmlnsDefinitionAttribute, но не търси сам. Няма смисъл, че 4 години по-късно това поведение не се е променило, но това изглежда е така.

person sellmeadog    schedule 22.09.2011
comment
Какво ще кажете за етикетите ‹?Mapping ›? Има ли информация за тях? Изглежда не мога да намеря нищо сам. - person myermian; 23.09.2011
comment
Аз лично никога не съм виждал нищо на този етикет и не си спомням да съм го виждал да се споменава. Подобно на вас, аз също не мога да намеря нищо в него, нито минало, нито настояще. - person sellmeadog; 23.09.2011
comment
Най-накрая намерих публикация във форума на MSDN за него, нещо като... но не и действителната препратка към него: social.msdn.microsoft.com/Forums/en/wpf/thread/ - person myermian; 07.03.2012