13

我已经研究了一段时间,试图找出发生以下情况的原因,但 StackOverflow 或 Google 上的解决方案都无法帮助我。

我有一个自定义 UserControl 正在尝试引用同一项目中的命名空间:

xmlns:my="clr-namespace:ColorPicker"

但是,当我编译时,出现以下错误:

未定义的 CLR 命名空间。“clr-namespace” URI 指的是程序集中未包含的命名空间“ColorPicker”。

这导致无法在 xaml 中构建我的项目或引用其他自定义控件,从而产生以下类型的错误:

找不到类型“my:ColorSelector”。确认您没有丢失程序集引用并且所有引用的程序集都已构建。

我已经尝试了这些帖子中给出的所有解决方案:

向 xaml 添加自定义命名空间

WPF xmlns:“clr-namespace”URI 引用了程序集中未包含的命名空间

“clr-namespace” URI 指的是程序集中未包含的命名空间

未定义的 CLR 命名空间

另外,为了清楚起见,我没有收到有关此项目中其他文件的任何其他错误,因此这似乎不是其他文件未编译的结果。

更新:可以在此处下载为我产生错误的示例项目:http ://www.filefactory.com/file/28fbmhj3f4qj/n/ColorPicker_zip

4

3 回答 3

6

您的第一个链接问题有答案。答案是:您必须先构建包含命名空间和引用的类/控件的程序集,然后才能在 .xaml 中引用它。我注释掉了您的 xaml 命名空间声明,然后注释掉了这些命名空间中的 xaml 元素,然后注释掉了由于不再声明这些元素而中断的 C# 代码。换句话说,我一直在评论,直到我可以成功构建。构建程序集后,我取消注释 xaml 命名空间声明,然后取消注释元素。这给出了需要在这些元素上使用 x:Name 而不是 Name 的错误,所以我这样做了。然后取消注释 C# 代码并构建。

于 2012-06-15T14:07:35.767 回答
1

xmlns:my="clr-namespace:ColorPicker;assembly=ColorPicker".

这对我有用!它更快,更不烦人​​!

于 2013-07-15T17:53:55.640 回答
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>

where 已移至列出的资源字典之一。

于 2013-08-27T22:18:42.017 回答