Проблемный эталонный конвертер из внешней сборки - PullRequest
4 голосов
/ 17 мая 2011

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

  1. Добавить ссылку на внешнюю сборку
  2. Создать словарь ресурсов
  3. Добавление XML-пространства имен, ссылающегося на сборку конвертеров
  4. Эталонные преобразователи

Итак, мой словарь выглядит так:

    <ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">

    <Converters:BoolToBrushConverter x:Key="boolToBrush"/>

</ResourceDictionary>

Однако при попытке собрать я получаю следующее исключение:

Error   18  The tag 'BoolToBrushConverter' does not exist in XML namespace 'clr-namespace:Client.Utilities.Converters;assembly=.Client.Utilities'. Line 12 Position 6.  C:\Resources.Tests\Resources\ResourceDictionaries\Converters\ConvertersResources.xaml   12  6   Client.eZenith.Resources.Tests

Есть идеи, почему это происходит?

Примечание: Из intellisense кажется, что пространство имен для сборки преобразователей правильное, так как все преобразователи отображаются в списке предложений после ввода <Converter:

Редактировать : VS и дизайнер смесей могут найти этот конвертер при рендеринге управляющего просмотра.

Редактировать: Я понял, что это не имеет никакого отношения к объединению словарей. Та же проблема возникает при добавлении конвертера в Ресурсы Windows .

Ответы [ 2 ]

1 голос
/ 27 июня 2011

В конце концов я нашел проблему, это ошибка объединенного ресурса, введенная в .NET 4.

Я исправил ее, добавив пустой стиль в словарь объединенных ресурсов (ранее у меня был RD, где я находилсяобъединение другого RD и ничего больше).

здесь - это недавно найденное сообщение в блоге, описывающее ту же проблему.

0 голосов
/ 17 мая 2011

Попробуйте использовать

<ResourceDictionary xmlns:Converters="clr-namespace:Client.Utilities.Converters;assembly=Client.Utilities">

.
Изменить: clr-namespace вместо namespace.

...