Мой стиль подключения WPF стилей.

Со временем при работе с 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>

Вот пожалуй и все, надеюсь пригодится.

Рейтинг
( Пока оценок нет )
Загрузка ...