Ресурсы WPF Theme не используются - PullRequest
1 голос
/ 10 марта 2011

В приложении, над которым я работаю, требуется поддержка тем Windows (Aero, Classic, Luna).

У меня есть несколько пользовательских элементов управления, которые я хочу уважать текущую тему.

Я создал папку с темами и поместил

/themes/classic.xaml
/themes/luna.normalcolor.xaml
/themes/aero.normalcolor.xaml
/themes/generic.xaml

В AssemblyInfo.cs проекта, содержащего пользовательские элементы управления, я определил ThemeInfo следующим образом:

[assembly: ThemeInfo(
    ResourceDictionaryLocation.SourceAssembly, 
    ResourceDictionaryLocation.SourceAssembly 
)]

Когда я изменяю тему в Windows, все стандартные элементы управления переключают тему, но мои пользовательские элементы управления отказываются читать что-либо, кроме generic.xaml

Я что-то упускаю здесь из очевидного?

1 Ответ

1 голос
/ 10 марта 2011

Некоторые вещи для проверки:

  1. Я не уверен, имеет ли значение заглавная буква, но обычно я вижу это как "Темы / Aero.NormalColor.xaml" и т. Д.

  2. Убедитесь, что в качестве действия сборки для ваших файлов XAML задано «Страница».Для этого выберите их и нажмите F4.

  3. Тема не переключится, если ваше приложение работает.Большинство собственных элементов управления WPF используют класс SystemColors.Это означает, что они могут менять цвета при изменении темы, но шаблон Style / ControlTemplate не изменится.

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

...