XAML: Как определить Шаблоны Данных и Стили, которые будут использоваться по нескольким Проектам

Автоматизация тестирования - это то, что делает все ваши тесты доступными для повторного воспроизведения в любое время без особых или дополнительных усилий. Модульное тестирование - очень распространенный вид автоматизации тестирования, который включает в себя тестирование каждой из отдельных наименьших частей.

5
задан Binary Worrier 10 June 2009 в 20:31
поделиться

3 ответа

ResourceDictionary - это то, что вам нужно, вы можете либо скопировать файл xaml, содержащий словарь ресурсов, между проектами, либо скомпилировать его в DLL, на которую вы будете ссылаться из своих проектов.

Чтобы ссылаться на словари в том же проекте вы добавляете что-то подобное в свой App.xaml (в данном случае я храню свои ресурсы в папке ControlStyles).

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="ControlStyles/Colors.xaml"/>
            <ResourceDictionary Source="ControlStyles/Window.xaml"/>
            <ResourceDictionary Source="ControlStyles/Button.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

Если вы скомпилируете их в другую dll, вы можете использовать этот синтаксис (если библиотека стилей называется StyleAssembly, слово «компонент» на самом деле является частью синтаксиса, а не именем каталога):

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Window.xaml"/>
            <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Button.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
10
ответ дан 18 December 2019 в 14:50
поделиться

Вам нужны объединенные словари ресурсов, как описано здесь .

0
ответ дан 18 December 2019 в 14:50
поделиться

@Nir прав, единственное, что мне тоже нравится делать, это заменять

 <ResourceDictionary Source="pack://application:,,,/StyleAssembly;component/ControlStyles/Colors.xaml"/>

на это сокращение

 <ResourceDictionary Source="/StyleAssembly;component/ControlStyles/Colors.xaml"/>

По-моему, это выглядит чище, и среда выполнения будет использовать префикс pack://application:,,,,, когда пытается найти ресурс.

3
ответ дан 18 December 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: