Со временем при работе с WPF набираеться небольшая такая коллекция стилей и темплейтов.
Лично у меня уже штук 30 всяких накруток для контролов, TreeView'ы с растягивающимися полями, TextBox'ы с исчезающими подписями, Button'ы и ComboBox'ы.
По началу все это дело писалось в каждом проекте заново, на третий раз копипастить уже стало влом.
Сначала создал папочку с названием Styles, и подключал её на лево и на право.
Потом когда появилась необходимость таскать за собой контролы, создал проект WpfControls, закинул туда стили, темплейты и контролы, короче всю UI билеберду. Получилось очень удобно.
Например если существует Темплейт для ComboBox меняющий его вид, ну и чуть принцип действия, ставим его x:Key равным "{x:Type ComboBox}", тогда он будет автоматически назначаться всем ComboBox'ам при подключении.
А если например есть еще один такой же темлпейт ComboBox'a но уже без кнопочки выбора, то есть менее часто используемый, то просто указываем его x:Key равный чему нибуть типа «ComboBoxWithoutButton». И тогда уже при подключении в нужном ComboBox'е указываем Template равным "{DynamicResource ComboBoxWithoutButton}".
Так как Стили и Темплейты являються ресурсами, подключать их надо по разному, в зависимости где они лежат, в соседней папке или в соседнем проекте.
Соседняя папка:
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Styles\MediumExpander.xaml"></ResourceDictionary>
<ResourceDictionary Source="Styles\ProgressBar.xaml"></ResourceDictionary>
<ResourceDictionary Source="Styles\Slider.xaml"></ResourceDictionary>
<ResourceDictionary Source="Styles\Checkbox.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
Соседний проект(не забудте добавить на него ссылку):
<Window.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="pack://application:,,,/WpfControls;component/Styles\Slider.xaml" />
<ResourceDictionary Source="pack://application:,,,/WpfControls;component/Styles\Styles.xaml" />
<ResourceDictionary Source="pack://application:,,,/WpfControls;component/Styles\Button.xaml" />
<ResourceDictionary Source="pack://application:,,,/WpfControls;component/Styles\Tab.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Window.Resources>
Вот пожалуй и все, надеюсь пригодится.
Комментарии (3)
RSS свернуть / развернутьеще можно использовать Application.Resources вместо Window.Resources, соответственно положив все это в файл App.xaml, для того чтобы стили были доступны глобально
NetCoder
gorniv
Exscess
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.