XAML XML命名空间中不存在标记

kxe2p93d  于 2022-12-07  发布在  其他
关注(0)|答案(8)|浏览(406)

这个错误似乎贴得到处都是但每个错误似乎都有自己的解决方案,没有一个解决了我的问题。
我正在创建(稍后合并)的资源字典出现错误,即XML命名空间"clr-namespace:Company. Project. Module. Folder"中不存在标记"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列表是用intellisense的自动完成创建的,然后手动重新键入。两者都不起作用。
我也试着把所有东西都移到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>

如果我用ResourceDictionary替换SharedResourceDictionary,也会发生同样的错误。
xaml和上面的SharedResourceDictionary位于命名空间Company.Project.Main中,它引用了定义SharedResourceDictionary的位置以及我放入上面代码中的不同模块项目

x0fgdtte

x0fgdtte1#

根据this article,您只需执行以下操作:
发件人:
xmlns:ZZZ ="分类名称空间:YYY;程序集= YYY "
收件人:
xmlns:ZZZ ="分类名称空间:YYY;程序集="
为程序集保留空值=
这是对我有效的解决方案。

wztqucjr

wztqucjr2#

这可能不是您的问题的解决方案,但我看到了您经常询问的错误,该问题通常是由加载程序集的问题引起的。
如果您检查您的汇编,它有一个黄色的三角形附加到它,那么它可能是不兼容您当前的项目设置,由于不同版本的. NET,或类似的东西。
这通常会失败而不显示任何消息,或者只会产生警告;当您尝试在XAML中引用该汇编时,您将得到一个如您所描述的错误。

blmhpbnm

blmhpbnm3#

看起来这主要是一个用户错误。但这也可能发生在其他人身上。当我从它的原始文件复制xmlns:moduleviewmodel定义时,我不得不自己添加assembly=部分。就像我说的,我自己添加了assembly=部分,并使用了自动完成功能,键入“xmlns:moduleviewmodel=”后,我们就可以看到下面的内容。就在我们发现错误之前,我们再次尝试了自动完成功能,因为我们发现7个命名空间中有一个没有产生错误。就在那时,我注意到汇编路径中有一个字母没有大写,而应该是大写。奇怪的是,自动完成功能实际上自己插入了这个错误。当我们编译时,我注意到了错误的字母。更奇怪的是,在我手动修复了所有路径后,我们再次尝试了自动完成功能,它拼写正确。
我不知道错误的自动完成的原因,但与固定的字母,它编译得很好。
现在我只是想知道是否有人会相信自动完成是改变了我!

ggazkfy8

ggazkfy84#

检查错误列表中的警告,在我的情况下,那里有关于未解析的.Net 4.5.1引用的消息,而我的项目目标框架是4.5

nle07wnf

nle07wnf5#

对于这个错误,我有一个完全不同的原因:
我试图使用程序集A中的类,所以我
1)已将对此程序集引用添加到项目中,
2)在我的项目中添加了对程序集A使用的程序集B的引用,
3)已添加到我的XAML

xmlns:assemblyA="clr-namespace:A;assembly=A"

3)添加到我的代码中

using A;

这不起作用,我得到了这个“标记不存在”的错误。
"有什么帮助,是添加"

using B;

在我代码中,尽管我没有直接使用程序集B中的任何内容。

disho6za

disho6za6#

如果在与WPF窗体相同的程序集中有用户控件,请确保在导入命名空间时删除程序集部分
错误的导入:xmlns:usercontrol=“用户控制器名称空间:CCFARKS.程序集=CCFARKS”
xmlns:usercontrol=“名称空间类型:CCFARKS.用户控件”

uxh89sit

uxh89sit7#

这是一个老问题,但问题来自. csproj。确保在“itemgroup”部分中,“page”元素定义在“compile”元素之前。
好的:

<ItemGroup>
...
<Page Include="ScreenComponents\StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
<Compile Include="ScreenComponents\StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
…

不妙:

<ItemGroup>
...
<Compile Include="ScreenComponents\StatusBar.xaml.cs">
  <DependentUpon>StatusBar.xaml</DependentUpon>
</Compile>
<Page Include="ScreenComponents\StatusBar.xaml">
  <SubType>Designer</SubType>
  <Generator>MSBuild:Compile</Generator>
</Page>
…

敬祝商祺,

oxalkeyp

oxalkeyp8#

如果您有此特定错误以外的其他错误,也可能会发生这种情况。更多的错误可能会导致文件无法正确编译,从而导致此错误。
首先尝试同时移除其他组建'ERRORS'和'WARNINGS',然后重新建置方案。

相关问题