首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF - <?Mapping >还在使用吗?

WPF - <?Mapping >还在使用吗?
EN

Stack Overflow用户
提问于 2011-05-10 21:21:00
回答 1查看 309关注 0票数 6

基本上,我记得曾经有一段时间,您可以使用以下代码:<?Mapping ... > (它似乎不再工作了--可能已经被弃用了?)

我知道我可以像这样映射我的XML名称空间...

代码语言:javascript
复制
xmlns:xyzcon="clr-namespace:XYZ.Wpf.Controls"
xmlns:xyzcom="clr-namespace:XYZ.Wpf.Commands"

但是,我也知道我可以像这样映射我的XML名称空间(更干净)

代码语言:javascript
复制
[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")]

这使得它非常容易使用,因为我可以让所有的CLR名称空间指向相同的XML名称空间,而不是使用l、lv等前缀。

代码语言:javascript
复制
xmlns:xyz="http://schemas.mycompany.com/netfx/xaml/presentation"

这行代码让我可以访问XYZ.Wpf.Controls和XYZ.Wpf.Commands。问题是,只有在程序集已经编译的情况下,这才能起作用。当我在同一个程序集中工作时,我不能使用这个技巧。

基本上,在同一个应用程序或程序集内,我希望在全球范围内将不同的CLR命名空间映射到相同的XML命名空间(这样,在我的整个应用程序中,我只需包括一个XML命名空间)。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2011-09-23 02:28:39

似乎仍然没有办法在WPF项目中映射本地命名空间。《Programming WPF: Building Windows UI with Windows Presentation Foundation》一书(2007年出版)指出:

Visual Studio中的WPF项目不能使用由XAML中的XmlnsDefinitionAttribute引入的、位于同一程序集中的命名空间。如果要引用本地定义的类型,则必须使用替代机制...

“替代机制”是每个名称空间可怕的xmlns:local="..."

我的理解是,执行程序集(在本例中为本地WPF程序集)在所有引用的程序集中搜索XmlnsPrefixAttributeXmlnsDefinitionAttribute,但不搜索自身。4年后,这种行为没有改变,这是没有道理的,但情况似乎就是这样。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5950706

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档