1

在我正在处理的应用程序中,要求支持 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 之外的任何内容

我在这里遗漏了什么明显的东西吗?

4

1 回答 1

1

需要检查的一些事项:

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

  2. 验证 XAML 文件的生成操作是“页面”。为此,请选择它们并按 F4。

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

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

于 2011-03-10T15:15:23.190 回答