WPF:VS2012设计师显示“组件'XXX'没有被标识为URI YYY的资源”

17
如标题所示,这个错误是由设计器抛出的,这意味着设计器无法正确显示我的UserControl,进而导致我无法在此UserControl中流畅地从一个元素导航到另一个元素进行修改。非常恼人。
XXX是我的UserControl的名称,而URI YYY实际上是XXX的路径。因此,我不明白为什么它找不到自己作为资源。我搜索了这个错误,但大多数情况都发生在运行时。在我的情况下,在执行时根本不会发生错误。这个错误的描述并不够清晰,因为我不确定CLR中的谁正在将文件本身作为资源加载。
另一件值得一提的事情是,这个错误只发生在我构建应用程序项目之后,其中错误的UserControl驻留。在我点击清理项目后,设计器可以显示整个内容(但显然我不能每次在进行任何更改之前都清理项目,因为构建需要时间)。

1
我也遇到了同样的问题 - 感谢您提醒清理项目。 - mola
我在其他用户控件中使用用户控件时遇到了这种情况。父控件可以在设计器中呈现,但其他控件会抛出异常。我正在使用DevEx WPF控件。清理项目对我也有用。 - Erikest
6个回答

15

控件的.g.cs或.g.i.cs文件可能已经损坏。尝试清理,关闭Visual Studio并重新启动它。我认为这在几种情况下对我有帮助,特别是当我将控件从一个解决方案复制到另一个解决方案时。


6
只需删除以下文件夹:%LOCALAPPDATA%\Microsoft\VisualStudio\12.0\Designer\ShadowCache

1
如果你将一个UserControl重构到之前引用该UserControl的较低级别项目中,那么你会看到这个错误。
从命名空间中删除程序集引用可以解决这个问题。
<UserControl xmlns:ui="clr-namespace:MyCompany.Core.UI;assembly=MyCompany.Core.UI"

应该是

<UserControl xmlns:ui="clr-namespace:MyCompany.Core.UI"

设计师不够聪明,无法突出这一点。

0

为了显示用户控件,设计师必须实例化用户控件。请注意可能出现的空引用异常。

在我的情况下,由于未注入依赖项,用户控件出现了NRE。我添加了对NRE的处理,问题得到了解决。


0

我遇到了相同的问题,它编译和运行得很好,但XAML编辑器/设计器抱怨。在我的情况下,我发现解决方案是我的用户控件在XAML中声明在一个命名空间中(x:Class =“myNamespace.myUserControl”),但在代码后台中没有声明。在代码后台中添加命名空间声明解决了我的问题。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接