我一直在研究一段时间,试图找到以下内容的原因,但StackOverflow或Google上的解决方案都无法帮助我。
我有一个自定义UserControl,它试图引用同一个项目中的命名空间:
xmlns:my="clr-namespace:ColorPicker"
然而,当我编译时,我收到以下错误:
未定义的CLR命名空间。 'clr-namespace'URI是指未包含在程序集中的命名空间'ColorPicker'。
这导致无法在xaml中构建我的项目或引用其他自定义控件,从而产生以下类型的错误:
找不到“my:ColorSelector”类型。验证您是否缺少程序集引用,并且已构建所有引用的程序集。
我尝试过这些帖子中提供的所有解决方案:
adding a custom namespace to xaml
WPF xmlns: The 'clr-namespace' URI refers to a namespace that is not included in the assembly
The 'clr-namespace' URI refers to a namespace that is not included in the assembly
另外,为了清楚起见,我没有收到有关此项目中其他文件的任何其他错误,因此它似乎不是其他文件无法编译的结果。
更新:可以在此处下载为我生成错误的示例项目:http://www.filefactory.com/file/28fbmhj3f4qj/n/ColorPicker_zip
答案 0 :(得分:6)
您的first linked question有答案。答案是:您必须构建包含命名空间和引用的类/控件的程序集,然后才能在.xaml中引用它。我注释掉了你的xaml名称空间声明,然后注释掉了那些名称空间中的xaml元素,然后注释掉了由于不再声明这些元素而导致的C#代码。换句话说,我一直在评论,直到我能够成功建立。构建程序集后,我取消注释xaml名称空间声明,然后是元素。这给出了一个错误,需要在这些元素上使用x:Name而不是Name,所以我这样做了。然后取消注释C#代码并构建它。
答案 1 :(得分:1)
xmlns:my="clr-namespace:ColorPicker;assembly=ColorPicker"
。
这对我有用!它更快,更不烦人!
答案 2 :(得分:0)
我不得不将我的资源转移到外部资源字典中。 我通过更改:
修复了我的问题<UserControl.Resources>
<SHCL:GoodBadConverter x:Key="GoodBadConverter"/>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StandardHelperClassLibrary;component/WPF/Dictionaries/WindowStylesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
到
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/StandardHelperClassLibrary;component/WPF/Dictionaries/WindowStylesDictionary.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</UserControl.Resources>
将其移至列出的资源词典之一。