在我正在开发的应用程序中,需要支持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之外的任何内容
我错过了这里明显的一切吗?
答案 0 :(得分:1)
要检查的一些事项:
我不确定大写是否重要,但我通常将其视为“Themes / Aero.NormalColor.xaml”等。
验证XAML文件的Build Action是否为“Page”。为此,请选择它们并按F4。
如果您的应用程序正在运行,主题将不会切换。大多数本机WPF控件都使用SystemColors类。这意味着他们可以在主题更改时切换颜色,但不会更改Style / ControlTemplate。
如果这些没有帮助,您可能需要发布其他代码,例如自定义控件如何覆盖DefaultStyleProperty和示例样式。