不使用WPF主题资源

时间:2011-03-10 14:49:19

标签: wpf windows-themes

在我正在开发的应用程序中,需要支持windows主题(Aero,Classic,Luna)。

我有一些自定义控件,我想尊重当前主题。

我创建了themes-folder并放置了

/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 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  1. 我不确定大写是否重要,但我通常将其视为“Themes / Aero.NormalColor.xaml”等。

  2. 验证XAML文件的Build Action是否为“Page”。为此,请选择它们并按F4。

  3. 如果您的应用程序正在运行,主题将不会切换。大多数本机WPF控件都使用SystemColors类。这意味着他们可以在主题更改时切换颜色,但不会更改Style / ControlTemplate。

  4. 如果这些没有帮助,您可能需要发布其他代码,例如自定义控件如何覆盖DefaultStyleProperty和示例样式。