加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

WPF – <?mapping>是否已被使用?

发布时间:2020-12-16 23:29:01 所属栏目:百科 来源:网络整理
导读:基本上,我记得曾经有一段时间你可以使用以下内容:?Mapping ... (它似乎不再起作用了 – 也许是贬值了?) 我知道我可以像我这样映射我的XML命名空间…… xmlns:xyzcon="clr-namespace:XYZ.Wpf.Controls"xmlns:xyzcom="clr-namespace:XYZ.Wpf.Commands" 但是
基本上,我记得曾经有一段时间你可以使用以下内容:<?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命名空间映射到SAME XML命名空间(在整个我的应用程序中,我只需要包含一个XML命名空间).有办法吗?

解决方法

似乎仍无法在WPF项目中映射本地名称空间.书籍 Programming WPF: Building Windows UI with Windows Presentation Foundation(2007年出版)指出:

Visual Studio中的WPF项目不能使用XAML中的XmlnsDefinitionAttribute引入的名称空间,这些名称空间位于同一程序集中.如果要引用本地定义的类型,则必须使用备用机制…

对于每个命名空间,“替代机制”是可怕的xmlns:local =“…”.

我的理解是执行程序集(在本例中是本地WPF程序集)搜索所有引用的程序集以查找XmlnsPrefixAttribute和XmlnsDefinitionAttribute,但不搜索自身.没有任何意义,4年后这种行为没有改变,但似乎是这种情况.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读