Можно ли использовать файл ResourceDictionary для нескольких проектов?

StackOverflow https://stackoverflow.com/questions/946869

Вопрос

Если у меня есть 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 указал, что мне нужно ссылаться на саму сборку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top