Со временем при работе с 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>
Вот пожалуй и все, надеюсь пригодится.