Что такого особенного в Generic.xaml?

Я пытался выяснить, как организовать файлы ResourceDictionary для повторного использования и совместного использования с другими членами моей команды.

Я продолжаю сталкиваться с «Generic.xaml», но если я смотрю на MSDN для Generic.xaml или просто выполняю поиск Google, я только, кажется, получаю сообщения в блогах и вопросы форума, которые, возможно, упоминают об этом – я не могу показаться ударил по чему-то действительно авторитетному и ясному.

В чем разница между Generic.xaml и MyRandomlyNamedResourceDictionary.xaml? Кажется, в любом случае, мне нужно ссылаться на ResourceDictionaries, хранящиеся в библиотеках с атрибутом Source. Например,:

 <ResourceDictionary Source="/CommonLibraryWpfThemes;component/Themes/Generic.xaml"  

Итак, какое преимущество дает Generic.xaml? Имеет ли она какие-либо цели, если я не пытаюсь дать моему приложению несколько «взглядов» (т. Е. Если у меня есть только одна тема)?

Каждый элемент управления в WPF имеет стиль по умолчанию, который обеспечивает, помимо прочего, ControlTemplate Control по умолчанию. WPF ищет стиль по умолчанию в специальном словаре ресурсов в папке «Темы» в той же сборке, что и элемент управления. Ключ для стиля по умолчанию обеспечивается свойством Control.DefaultStyleKey , значение по умолчанию которого переопределяется в каждом подclassе элемента управления.

Имя ресурсного словаря зависит от текущей темы Windows, например, в Vista с использованием темы Aero, словарь называется Aero.NormalColor.xaml, в XP с использованием темы по умолчанию это Luna.NormalColor.xaml. Если стиль не найден в словаре тем, он выглядит в Generic.xaml, т.е. для элементов управления, внешний вид которых не зависит от темы.

Это относится только к любым настраиваемым элементам управления, которые вы определили, т.е. к classам, производным от Control, прямо или косвенно. Вы можете изменить стиль по умолчанию для стандартного элемента управления, исходя из него и вызывая DefaultStyleKeyProperty.OverrideMetadata в статическом конструкторе, но затем вам нужно предоставить полный стиль, включая ControlTemplate.

Обратите внимание, что WPF может видеть внешнюю сборку для вашего стиля по умолчанию, используя атрибут ThemeInfo. Внешняя assembly должна быть названа < YourAssembly > . < ThemeName > .dll, например PresententationFramework.Aero.dll.

Чтобы файл generic.xaml (без generic.xaml регистра) был чем-то особенным, необходимо выполнить два условия:

  • Он должен находиться в папке Sub-root Themes в проекте
  • Сборка должна быть отмечена ThemeInfoAttribute (обычно в AssemblyInfo.cs )

Затем он служит местом поиска по умолчанию для любых стилей по умолчанию, которые вы хотите применить к своим элементам управления. Также обратите внимание, что для стиля, который будет использоваться по умолчанию, он должен объявить как свой TargetType, так и x: Key как тип управления, который должен быть стилизован.

Если вы хотите добавить в приложение целые темы и тему, которые выполняются с помощью некоторого кодирования, этот метод просто определяет словарь ресурсов по умолчанию.

Interesting Posts

Создание UUID из строки без тире

JPA – сохранение отношения от одного до большого

Соединение Jsoup с базовой аутентификацией доступа

Установка флага std = c99 в GCC

Как приложение Metro в Windows 8 взаимодействует с настольным настольным окном на одном компьютере?

Как скрыть вывод команды в bash

можете ли вы разместить частный repository для своей организации для использования с npm?

C ++: Поймать деление на нулевую ошибку

ConfigurationManager.OpenExeConfiguration – загружает неправильный файл?

Как закрепить файлы в командной строке XP без дополнительных инструментов / загрузок

Каковы преимущества и недостатки использования сети доставки контента (CDN)?

Редактировать определенный элемент в XDocument

Удаление узлов из XmlDocument

Можно ли ориентироваться на более старые версии iOS при использовании Xcode 4.2 и iOS 5 SDK?

Почему не может использоваться функция, не являющаяся членом, для перегрузки оператора присваивания?

Давайте будем гением компьютера.