Можно ли использовать файл ResourceDictionary для нескольких проектов?
-
09-09-2019 - |
Вопрос
Если у меня есть ResourceDictionary в одном проекте, можно ли создать другой проект, использующий ресурсы, определенные в первом проекте?Обратите внимание, что оба проекта являются приложениями WPF, а не ControlLibraries.
Спасибо!!
Решение
Да, конечно, это возможно, если проект Б имеет ссылку на проект А.
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/Project A;component/YourSubFolder/YourResourceFile.xaml" />
</ResourceDictionary.MergedDictionaries>
Затем вы можете просто использовать ресурсы, определенные в YourResourceFile.xaml.
Другие советы
Я обнаружил, что мне нужно ссылаться на саму сборку, а не использовать имя проекта.Мне также не нужно было использовать синтаксис package:///, чтобы это работало.
В этом ответе на повторяющийся вопрос указывается используемый формат (я могу убедиться, что этот синтаксис работает в .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 указал, что мне нужно ссылаться на саму сборку.