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

Google поднял страницу на сайте Sun, которая немного обсуждает это.

Вы правы в переменной; this действительно может использоваться для дифференциации переменной метода из поля класса. [f1]

Однако, я действительно ненавижу это соглашение. Предоставление двух разных переменных буквально одинаковых имен - это рецепт ошибок. Я предпочитаю что-то вроде: [f2]

Те же результаты, но без шансов на ошибку, когда вы случайно ссылаетесь на x, когда вы действительно хотели ссылаться на x.

Что касается использования этого метода, вы правы в отношении эффектов; вы получите те же результаты с или без него. Вы можете использовать его? Конечно. Должны ли вы использовать его? До вас, но, учитывая, что я лично считаю бессмысленной многословность, которая не добавляет ясности (если код не заполнен статическими операторами импорта), я не склонен использовать его сам.

143
задан akjoshi 17 December 2015 в 07:47
поделиться

2 ответа

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

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

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

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

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

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

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

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

Внешняя сборка должна называться < YourAssembly > . < ThemeName > .dll, например PresententationFramework.Aero.dll.

Внешняя сборка должна называться < YourAssembly > . < ThemeName > .dll, например PresententationFramework.Aero.dll.

145
ответ дан 23 November 2019 в 22:43
поделиться

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

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

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

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

99
ответ дан 23 November 2019 в 22:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: