Google поднял страницу на сайте Sun, которая немного обсуждает это.
Вы правы в переменной; this
действительно может использоваться для дифференциации переменной метода из поля класса. [f1]
Однако, я действительно ненавижу это соглашение. Предоставление двух разных переменных буквально одинаковых имен - это рецепт ошибок. Я предпочитаю что-то вроде: [f2]
Те же результаты, но без шансов на ошибку, когда вы случайно ссылаетесь на x
, когда вы действительно хотели ссылаться на x
.
Что касается использования этого метода, вы правы в отношении эффектов; вы получите те же результаты с или без него. Вы можете использовать его? Конечно. Должны ли вы использовать его? До вас, но, учитывая, что я лично считаю бессмысленной многословность, которая не добавляет ясности (если код не заполнен статическими операторами импорта), я не склонен использовать его сам.
Каждый элемент управления в 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. Чтобы файл generic.xaml
(без учета регистра) был чем-то особенным, должны быть выполнены два условия:
ThemeInfoAttribute
(обычно в AssemblyInfo.cs
) Затем она служит местом поиска по умолчанию для любых стилей по умолчанию, которые вы хотите применить к вашим Controls. Также обратите внимание, что для того, чтобы стиль был по умолчанию, он должен объявить как его TargetType, так и x: Key как тип элемента управления, который должен быть стилизован.
Если вы хотите добавить целые темы и переключение тем в свое приложение, то есть выполненный с некоторым кодированием, этот метод просто определяет словарь ресурсов по умолчанию.