Можно ли совместно использовать файл ResourceDictionary между несколькими проектами? - PullRequest
18 голосов
/ 04 июня 2009

Если у меня есть ResourceDictionary в одном проекте, возможно ли создать другой проект, который использует ресурсы, определенные в первом проекте? Обратите внимание, что оба проекта являются приложениями WPF, а не ControlLibraries.

Спасибо !!

Ответы [ 2 ]

30 голосов
/ 04 июня 2009

Да, конечно, это возможно, если у Проекта Б есть ссылка на Проект А.

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>

Тогда вы можете просто использовать ресурсы, определенные в YourResourceFile.xaml.

10 голосов
/ 18 сентября 2012

Я обнаружил, что должен ссылаться на саму сборку и не использовать имя проекта. Мне также не нужно было использовать синтаксис pack: ///, чтобы заставить это работать.

Этот ответ на повторяющийся вопрос указывает используемый формат (я могу убедиться, что этот синтаксис работает в .NET 4.0): https://stackoverflow.com/a/10216253/1260563

В частности (поскольку я всегда забываю, что составная часть думает, что это папка, которую кто-то использует):

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/<YourAssemblyName>;component/<YourReferencedFileHere.xaml>" />
</ResourceDictionary.MergedDictionaries>

Итак, если у вас есть сборка Abc.Def.dll и файл в этой DLL с именем Xyz.xaml на корневом уровне, вы должны использовать:

<ResourceDictionary.MergedDictionaries>
   <ResourceDictionary Source="/Abc.Def;component/Xyz.xaml" />
</ResourceDictionary.MergedDictionaries>

Примечание: Resharper 7 указал, что я должен ссылаться на саму сборку.

...