【发布时间】:2011-10-11 06:57:46
【问题描述】:
这个错误似乎到处都是,但每个地方似乎都有自己的解决方案,但都没有解决我的问题。
我正在制作(以及后来合并)的资源字典出现错误,即 XML 命名空间“clr-namespace:Company.Project.Module.Folder;assembly=Company.Project”中不存在标签“ModelBindings” .模块'
我引用的程序集是自定义的,包含在解决方案中。不仅如此,我们还查看了放入资源字典所在项目的 bin 中的 dll,并在检查后包含我要引用的类。所以我知道 1. dll 位于正确的访问位置并且在引用中。 2. dll中包含我想要的数据。
这里有一些资源字典的代码
命名空间列表
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
创建要引用的资源
<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>
就像其他人的错误一样,intellisense 说它是洁净的。此外,xmlns 列表是使用智能感知的自动完成创建并手动重新输入的。都没有用。
我还尝试将所有内容移至 app.xaml,但它仍然给了我同样的错误。
如果我删除 ResourceDictionary 文件的主体,代码编译得很好,但是所有的绑定都被破坏了。
最后,所有资源定义都在使用它们的 xaml 文件中定义,效果很好。只有在我尝试从不同的项目创建它们之后它才不起作用。我对此进行了更改以修复错误,并且返回旧方法可能会出现问题。
编辑:在显示我正在使用的资源字典方面,这是我能做的最好的事情
<SharedResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:modulemodel="clr-namespace:Company.Project.Module.Folder;assembly=Company.Project.Module"
>
<modulemodel:ModelBindings x:Key="ModuleModelBindings"/>
</SharedResourceDictionary>
如果我将 SharedResourceDictionary 替换为 ResourceDictionary,则会出现同样的错误。
app.xaml 和上面的 SharedResourceDictionary 相对地位于命名空间 Company.Project.Main 中,它引用了 SharedResourceDictionary 的定义位置以及我在上面代码中放入的不同模块项目
解决方案
看起来这主要是用户错误。但这可能发生在其他人身上。当我从原始文件中复制 xmlns:moduleviewmodel 定义时,我必须自己添加 assembly= 部分。就像我说的那样,我自己都这样做了,也使用了键入 'xmlns:moduleviewmodel=' 后的自动完成功能。就在我们发现错误之前,我们再次尝试了自动完成,因为我们发现 7 个命名空间之一没有生成错误。就在那时,我注意到汇编路径中有一个字母不应该大写。奇怪的是,自动完成实际上是自己插入了这个错误。在我们编译时,我注意到了错误的信。更奇怪的是,在我手动修复了所有路径后,我们再次尝试了自动完成,它拼写正确。
我不知道错误自动完成的原因,但是使用固定字母它编译得很好。
现在我只是想知道是否有人会相信自动完成功能正在改变我!
【问题讨论】:
-
请发布实际的 XAML。然后,您将选择 XAML 并按 Control-K 将其格式化为代码。
-
用解决方案更新了问题,但不知道根本原因的哪一部分
-
你可以回答你自己的问题!这样,您就可以获得赞成票。
-
@John:您对自己的问题的回答是否获得了代表支持?但是,为了质量,应将答案作为答案发布并标记为已接受。
-
@Anthony:是的,你得到了代表。这是设计的。
标签: c# silverlight xaml resourcedictionary