WPF: конструктор VS2012 показывает "Компонент" XXX "не имеет ресурса, идентифицированного с помощью URI YYY"

Как видно из названия, эта ошибка вызывается дизайнером, что означает, что дизайнер не может корректно отображать мой UserControl, что, в свою очередь, означает, что я не могу плавно перейти от элемента к элементу в этом UserControl, чтобы внести изменения. Действительно раздражает.

XXX - это имя моего UserControl, в то время как URI YYY - это фактически XXX-путь. Поэтому я не знаю, понимаю, что он не может найти себя ресурсом. Я ошибся в этой ошибке, но большинство из них произошло во время выполнения. В моем случае это не происходит, когда я его выполняю. Описание этой ошибки действительно недостаточно объяснимо, потому что я не уверен, кто в CLR загружает сам файл в качестве ресурса.

Еще одна вещь, о которой стоит упомянуть, заключается в том, что эта ошибка возникает только после создания моего проекта приложения, в котором находится ошибка UserControl. После того, как я нажму, чтобы очистить проект, дизайнер может отобразить весь материал (но, t очищайте проект каждый раз, прежде чем я вношу какие-либо изменения, поскольку здание требует времени)

Ответы

Ответ 1

Возможно, файл управления .g.cs или .g.i.cs поврежден. Попробуйте очистить, закрыть визуальную студию и перезапустить ее. Я думаю, что это помогло мне в нескольких случаях, особенно когда я копирую элементы управления пасты из одного решения в другое.

Ответ 2

Просто удалите подпапки в

%LOCALAPPDATA%\Microsoft\VisualStudio\12.0\Designer\ShadowCache

Ответ 3

Если вы реорганизуете UserControl в проект нижнего уровня, который ранее указывал UserControl, вы увидите эту ошибку.

Удаление ссылки на сборку из пространства имен устраняет проблему.

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

должен быть

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

Дизайнер недостаточно умен, чтобы выделить это.

Ответ 4

Я столкнулся с одной и той же проблемой, скомпилировал и работал нормально, но редактор XAML/Designer жаловался. В моем случае я нашел решение состоять в том, что мой пользовательский элемент управления был объявлен в пространстве имен в XAML (x: Class= "myNamespace.myUserControl" ), но не в коде позади. Добавление декларации пространства имен в исправленном мной коде.

Ответ 6

Чтобы отобразить UserControl, разработчику необходимо создать экземпляр пользовательского элемента управления. Найдите возможные исключения из Null Reference.

В моем случае пользовательский элемент управления имел NRE из-за того, что зависимость не была введена. Я добавил обработку для NRE и не более проблем.