Значение преобразователя неизвестно в ресурсных словарях - PullRequest
0 голосов
/ 02 января 2012

Я использую стиль списка в моем проекте дважды, поэтому я хочу использовать его в словаре ресурсов.Этот стиль списка имеет два преобразователя значений, поэтому я создал экземпляры преобразователей в одном и том же файле ресурсов.хотя во время выполнения он говорит, что «неизвестный тип не может быть объявлен», хотя те же объявления конвертера работают при их использовании в файле mainwindow.xaml.

У кого-нибудь есть идея?

1 Ответ

4 голосов
/ 07 января 2012

У меня была такая же проблема, пока я не переместил конвертер в файл App.xaml в разделе ресурсов. Это мой пример файла App.xaml, я только что создал конвертер с именем TextConverter для примера.

Есть два способа сделать это, если вы используете другие ResourceDictionaries, вы должны использовать ResourceDictionary.MergedDictionaries во всех случаях, как показано ниже:

<Application x:Class="WPFFeatureSample_Application.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:converters="clr-namespace:WPFFeatureSample_Application.Converters"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary>
                <converters:TextConverter x:Key="TextConverter1"></converters:TextConverter>
            </ResourceDictionary>
            <ResourceDictionary Source="Resources/ControlDictionary.xaml"></ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Если у вас нет других файлов ресурсов, это выглядело бы так:

<Application x:Class="WPFFeatureSample_Application.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
          xmlns:converters="clr-namespace:WPFFeatureSample_Application.Converters"
         StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <converters:TextConverter x:Key="TextConverter1"></converters:TextConverter>
    </ResourceDictionary>
</Application.Resources>

Одна интересная ссылка при использовании конвертеров и ресурсных словарей в целом такова: http://www.dotnetdude.com/2011/01/23/ResourceDictionariesAreMakingMyHairHurt.aspx

...