Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Имеется ли возможность "расшарить" стили WPF?


Автор: nnm2005 3.7.2009, 14:03
Вопрос такой: можно ли сделать стили общими для нескольких приложений, хранить их например в одном проекте, а использовать в нескольких приложениях? Как тогда к ним обращаться(т.е. при подключении к другому проекту)? Можно ли делать такие стили дефолтными для контролов? 

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

Автор: Partizan 3.7.2009, 14:27
nnm2005, 

Цитата

можно ли сделать стили общими для нескольких приложений, хранить их например в одном проекте, а использовать в нескольких приложениях?


можно...для решения задачи - стиль выносится в отдельный ResourceDictionary, в отдельную сборку.

Цитата

Как тогда к ним обращаться(т.е. при подключении к другому проекту)?


Во всех приложениях, где он нужен - его можно использовать, предварительно поместив соответствующий ResourceDictionary в коллекцию MergedDictionaries. (читать msdn про MergedDictionaries и про pack URI scheme)


Цитата

Можно ли делать такие стили дефолтными для контролов? 


Можно, путём установки свойства стиля TargetType в необходимый тип.

Цитата

Может кто видел статьи/туториалы/мануалы/примеры чего-нибудь подобного? 


Adam Nathan. WPF Unleashed. Читать главу про Styles,Templates, etc.

Автор: nnm2005 3.7.2009, 14:45
Спасибо, Partizan, буду пробовать.

Автор: nnm2005 3.7.2009, 16:40
Ура, в общем все получилось. Создал проект типа Class Library, туда перенес все файлы XAML (resource dictionaries со стилями). Build action у этих xaml'ов поставил Page. Далее в app.xaml в нужном приложении сделал такую секцию:
Код

<ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/WPF.Resources;Component/StyleDictionaries/ButtonsStyleResourceDictionary.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/WPF.Resources;Component/StyleDictionaries/WpfDataGridStyleDictionary.xaml"/>
                <ResourceDictionary Source="pack://application:,,,/WPF.Resources;Component/StyleDictionaries/TabControlStyleDictionary.xaml"/>
            </ResourceDictionary.MergedDictionaries>
 

Вуаля, стили подцепились как будто они были в этом проекте.

Цитата

Adam Nathan. WPF Unleashed. Читать главу про Styles,Templates, etc.


 Более полезной в этой книге оказалась глава про бинарные ресурсы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)