2010-02-18 4 views
4

У меня есть WPF UserControl с связывающими конвертеров ссылочных так:XAML Designer «не может найти тип», когда преобразователи в UserControl.Resources

<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».

Так что я узнал how to debug the designer; когда я делаю, я получаю XamlParseException:

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

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

Не удалось понять, применяется ли статья Troubleshooting WPF Designer Load Failures.

+0

Я не мог получить какую-либо ошибку из-за аналогичного имени и ключа класса, поэтому я удалил свой ответ. Я должен задать очевидное: у вас есть класс под названием «ConfidenceColorConverter» в сборке, не так ли? Это публично? –

+0

Да; ConfidenceColorConverter, MyControl и MainWindow находятся в одном проекте с пространством имен проектов TheMainNamespaceOfThisAssembly. –

+0

Попробуйте воспроизвести это по чистому проекту. Это * не должно * терпеть неудачу, поэтому важно воспроизвести его без каких-либо нечетных побочных эффектов от проекта. – Sander

ответ

1

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

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

1

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

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

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

+0

Попробуйте использовать соглашение об именах, в котором частные поля и ключи XAML являются camelCase, а классы и типы - PascalCase. –

+0

@ Дэнни Варод - А? –

+0

Я попытался изменить имя x: name на «thisControl», сохраняя MyControl в качестве имени класса. Я попытался создать новый проект с конвертером в качестве ресурса, используемого для привязки внутри пользовательского элемента управления, и пользовательского элемента управления, используемого в окне. Это действительно работает, как говорит Станислав. Затем я упростил свое окно и пользовательское управление в исходном проекте только для пространств имен и XAML (соответствующих почти пустующему тестовому проекту), и я до сих пор получаю сообщение об ошибке. Я собираюсь вырвать код управления пользовательского элемента управления до минимума. –

 Смежные вопросы

  • Нет связанных вопросов^_^