不久前,我决定修补我的uxtheme.dll
(使用通用主题修补程序) 以允许使用非官方窗口主题。问题是 WPF 应用程序似乎忽略了本机 Windows 控件(例如滚动条和按钮)的自定义主题,而是为它们使用经典主题。
我第一次在 Visual Studio 2010 中注意到了这一点:
我以为这是程序本身的一个错误,但创建我自己的 WPF 应用程序却得到了同样的结果:
谷歌搜索显示我不是唯一遇到这个问题的人,但我还没有找到解决方案。
我能做些什么吗?我应该尝试不同的uxtheme.dll
修补程序吗?或者这是我尝试的后果[喘气]定制 Windows?
答案1
目前你对此无能为力。WPF 应用程序有自己的主题 [不与 Windows 主题耦合]。我能建议的最好办法是,你编写一个应用程序或创建自己的 dll,让 WPF 主题更改为你喜欢的主题,你会因此获得很多认可 ;)
答案2
这个问题确实有一个很好的解决方法。下面的过程将告诉 WPF 使用 windows vista/7 主题而不是 windows basic(对于控件)。
使用新主题会导致这些问题的原因是,wpf 通过检查当前激活的视觉样式的文件名来确定设置了什么主题。如果名称是“aero.msstyles”,则使用 aero 主题。如果是“luna.msstyles”,则更进一步检查当前配色方案以微调颜色(NormalColor、Metallic、Homestead 是 Windows XP 的配色方案,Windows Vista 完全放弃了配色方案概念,转而使用 Windows Aero)。wpf 中还有一个内置主题“royale.msstyles”。如果主题文件的名称 wpf 无法识别,则它只会使用 Windows 基本主题。
解决方法?将视觉样式从“{whatever}.msstyles”重命名为“aero.msstyles”,然后在记事本中修改其关联的“.theme”文件以适应新名称(请注意,现在您只能使用主题文件应用视觉样式)。WPF 现在显示 Windows Vista 样式而不是 Windows Basic ;-)。
答案3
我前段时间也问过这个问题,但找不到任何答案。
https://stackoverflow.com/questions/7495906/visual-studio-2010-classic-system-theme
Visual Studio 2010 支持的唯一主题是默认的 Aero 主题。不过我注意到有些主题确实支持它,但大多数不支持。
我尝试了所有方法,基本上,以管理员身份运行 VS2010、以兼容模式运行、安装/卸载 SP1 等。
我们必须遵守微软的规则:P
答案4
请原谅,我没有足够的“观点”来评论或澄清 AlexKven 的回答
只是想补充一下,对于那些感兴趣的人……
在*.theme
文件中,您必须aero.msstyles
以标题大小写指定。所以它应该读作类似于Path=%ResourceDir%\themes\path\to\Aero.msstyles
而不是...\aero.msstyles
。
另请参阅:github.com/riverar/uxstyle