Форум программистов, компьютерный форум, киберфорум
Наши страницы

Размещение стилей и шаблонов в отдельной библиотеке

Войти
Регистрация
Восстановить пароль
Оценить эту запись

Размещение стилей и шаблонов в отдельной библиотеке

Запись от amarf размещена 04.08.2015 в 18:47
Обновил(-а) amarf 11.08.2015 в 17:35

В Wpf очень сильную роль играют стили и шаблоны. При проектирование какого либо приложения намного удобнее подключить проект с уже готовыми стилями и шаблонами, нежели организовать инфраструктуру под те же цели в новом проекте.
Так же мне больше нравиться идея о том, что я могу простым копи/пастом библиотеки полностью изменить внешний вид контролов у пользователя, нежели полностью компилировать приложение (или его часть).

Я использую следующий подход (он не совсем правильный, но мне нравиться).
Итак начнем.
1. Для начала создадим проект (у меня он называется MyLibStyles) в котором будут храниться наши стили и шаблоны - тип проекта Библиотека классов.
2. Так как нам придеться в этом проекте работать с UI элементами придется добавить ссылки на:
PresentationFramework.dll
System.Xaml.dll
WindowsBase.dll
PresentationCore.dll

3. Добавим в корень проекта xaml файл (у меня этот файл называется MainDictionary.xaml) - (это можно сделать добавив xml файл данных и переименовав его). Содержание файла должно быть следующим:
XML
1
2
3
4
5
6
7
8
9
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
    
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ListBox/ListBoxStyle1.xaml" /> <!-- Это ссылка на словарь внутри проекта - у Вас она может отличаться -->
        <ResourceDictionary Source="PanelTemplates/ItemsPanelTemplate.xaml" /> <!-- Это ссылка на словарь внутри проекта - у Вас она может отличаться -->
        <ResourceDictionary Source="Tabcontrol/Items/ItemsStyle1.xaml" /> <!-- Это ссылка на словарь внутри проекта - у Вас она может отличаться -->
    </ResourceDictionary.MergedDictionaries>
    
</ResourceDictionary>
4. Создаем свою инфраструктуру папок и словарей прописывая их в MainDictionary.xaml. Обязательно всем xaml файлам в свойствах выставить "действие при сборке" = Page, иначе при компиляции проекта словите ошибку "не найден ресурс"
5. В основном проекте на любом из уровней (но лучше наверно в App.xaml) прописываем следующее содержание
XML
1
2
3
4
5
6
7
8
9
10
11
12
<Application x:Class="MyDataVirtu.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             StartupUri="MainWindow.xaml">
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="pack://application:,,,/MyLibStyles;component/MainDictionary.xaml" />
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>
6. Не забываем добавить ссылку на проект с библиотекой стилей в наш основной проект.

Пожалуй все. Теперь можно смело добавлять любой xaml и контролы в вашу библиотеку стилей и она будет компилироваться отдельной библиотекой.
Размещено в Без категории
Просмотров 354 Комментарии 1
Всего комментариев 1

Комментарии

  1. Старый комментарий
    Аватар для Дианка89
    космос %)
    Запись от Дианка89 размещена 03.10.2017 в 20:35 Дианка89 вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru