2015-05-23 5 views
0

У нас есть библиотека управления, которую мы ссылаемся в нашем основном приложении. В нем мы решили разделить наш Generic.xaml на конкретные ресурсы, такие как Brushes.xaml, Colors.xaml и т. Д., Тогда мы просто объединили их в Generic.xaml. Мы создали их как братьев и сестер Generic.xaml в каталоге Темы и мы поняли, что вы должны ссылаться на них локально относительно, как и ...Почему эта запись MergedDictionary вызывает исключение?

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="Brushes.xaml" /> 
</ResourceDictionary.MergedDictionaries> 

А вот атрибуты в AssemblyInfo.cs библиотеки классов в

[assembly:ThemeInfo(
    // Where theme specific resource dictionaries are located 
    // (used if a resource is not found in the page, or application resource dictionaries) 
    ResourceDictionaryLocation.None, 

    // Where the generic resource dictionary is located 
    // (used if a resource is not found in the page, app, or any theme specific resource dictionaries) 
    ResourceDictionaryLocation.SourceAssembly 
)] 

... но он бросает следующее исключение ...

{"Cannot locate resource 'brushes.xaml'."} 

(Обратите внимание на исключение нижнего регистра тоже. Одд.)

Теперь я пробовал «Brushes.xaml», «Темы/Brushes.xaml» и «/Themes/Brushes.xaml», но безрезультатно. Какого черта я скучаю?

Примечание: он работает, если ресурсы находятся в той же сборке, что и приложение. Это, по-видимому, касается только выделения ресурсов в библиотеку классов.

ответ

0

Найдено. Generic.xaml имеет специальные правила, в которых у вас есть, чтобы использовать полностью квалифицированный источник. Это сработало ...

<ResourceDictionary.MergedDictionaries> 
    <ResourceDictionary Source="/ControlLibrary;component/Themes/Brushes.xaml" /> 
</ResourceDictionary.MergedDictionaries>