Общие ресурсы 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?

0 ответов

Другие вопросы по тегам