gpt4 book ai didi

WPF - 不再使用 了吗?

转载 作者:行者123 更新时间:2023-12-04 15:49:09 24 4
gpt4 key购买 nike

基本上,我记得曾经有一段时间您可以使用以下内容:<?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 项目不能使用由 XmlnsDefinitionAttribute 引入的命名空间来自位于同一程序集中的 XAML。如果要引用本地定义的类型,则必须使用替代机制...

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

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

关于WPF - 不再使用 <?Mapping > 了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950706/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com