XAML Designer "не может найти тип", когда преобразователи находятся в UserControl.Resources - PullRequest
4 голосов
/ 18 февраля 2010

У меня есть WPC UserControl с преобразователями привязки, на которые ссылаются так:

<UserControl x:Class="MyControl" x:Name="MyControl"
   xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
   xmlns:local="clr-namespace:TheMainNamespaceOfThisAssembly">

    <UserControl.Resources>
      <local:ConfidenceColorConverter x:Key="ConfidenceColorConverter"/>
    </UserControl.Resources>

Затем я использую конвертер связывания позже. Я вижу пользовательский элемент управления в моем окне дизайна. Затем я компилирую, затем помещаю этот пользовательский элемент управления в главное окно. Я запускаю его, и оно работает. Тем не менее, я все еще хотел бы использовать дизайнер в главном окне, которое разрывается с:

Не удалось создать экземпляр типа 'MyControl'.

Итак, я научился отлаживать конструктор ; когда я это делаю, я получаю исключение XamlParseException:

Не удается найти тип 'TheMainNamespaceOfThisAssembly.ConfidenceColorConverter'. Сборка, используемая при компиляции, может отличаться от используемой при загрузке, и тип отсутствует. Ошибка в файле разметки ...

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

Не удалось понять, применима ли статья Устранение сбоев загрузки WPF Designer .

Ответы [ 2 ]

1 голос
/ 19 апреля 2010

После общения с другими разработчик VS2008 сталкивается с многочисленными проблемами, которые не позволяют использовать его во многих ситуациях. Мы сдались.

Обновление: Кажется, что некоторые, особенно Джоэл Кокран, с большим успехом используют представление дизайна Expression Blend, если вы подчиняетесь четырем принципам MVVM в разработке XAML.

1 голос
/ 26 февраля 2010

Не могли бы вы попытаться воспроизвести проблему в новом проекте, а не редактировать существующий? Вы не можете иметь

<UserControl x:Class="MyControl" x:Name="MyControl"...

так как вам нужно добавить пространство имен к «x: class» и изменить значение «x: Name», чтобы оно отличалось от имени класса. Дизайнер работает хорошо, когда я создаю чистый проект, когда вы описываете и исправляете ошибки такого рода. Возможно, вы опускаете некоторые детали в вопросе, который, по вашему мнению, не важен, но эти детали могут изменить ситуацию.

...