Общие ресурсы WPF внутри библиотеки дизайнера действий
Я разрабатываю набор пользовательских дизайнеров действий, которые содержат пользовательские элементы управления, изображения, стили и т. Д. XAML-файлы конструктора распределены по нескольким подкаталогам в проекте библиотеки (не в приложении WPF, поэтому app.xaml недоступен)
Мне нужно центральное место для хранения ресурсов, как и app.xaml в обычном приложении WPF.
В настоящее время я использую файл projectdir\ Properties \ lib.xaml, например так:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<ControlTemplate x:Key="TrafficLight">
...
</ControlTemplate>
</ResourceDictionary>
И ссылаться на это из всех моих дизайнерских XAML-файлов вот так:
<sap:ActivityDesigner.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/ActDesLib;component/Properties/lib.xaml" />
</ResourceDictionary.MergedDictionaries>
где ActDesLib - это название моей сборки.
Это работает, но выглядит немного неуклюже. Есть ли лучший способ сделать это?
Есть ли какой-нибудь "волшебный" файл, похожий на app.xaml, который автоматически включается для проекта библиотеки, без необходимости добавлять какую-либо специальную разметку к отдельным файлам XAML? Это значительно упростит реализацию единого стиля, даже если несколько разработчиков работают над разными дизайнерами.
Кстати: я пытался использовать относительные пути в атрибуте Source="...". Это не сработало при использовании моих действий в рабочем процессе внутри VS2010, тогда он не смог найти ресурсы. С абсолютным путем, содержащим имя сборки, он работает нормально. Но нет ли способа, чтобы VS2010 или дизайнер, находящийся в другом месте, могли автоматически находить путь к файлу словаря ресурсов, используя только относительные ссылки внутри моих XAML?