Можно ли совместно использовать файл ResourceDictionary между несколькими проектами?
Если у меня есть ResourceDictionary в одном проекте, можно ли создать другой проект, который использует ресурсы, определенные в первом проекте? Обратите внимание, что оба проекта - это приложения WPF, а не ControlLibraries.
Спасибо!!
Ответы
Ответ 1
Да, конечно, это возможно, поскольку проект B имеет ссылку на проект A.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
Затем вы можете просто использовать ресурсы, определенные в файле YourResourceFile.xaml.
Ответ 2
Я обнаружил, что мне пришлось ссылаться на сборку и не использовать имя проекта. Мне также не нужно было использовать синтаксис pack:///, чтобы заставить это работать.
Этот ответ на дублированный вопрос указывает используемый формат (я могу проверить, работает ли этот синтаксис в .NET 4.0):
fooobar.com/info/30369/...
В частности (поскольку я всегда забываю часть компонента, думая, что это папка, которую кто-то использует):
<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 указал, что мне пришлось ссылаться на сборку.