在Windows 10中使用真正的Windows 7主题?

6
我正在开发一个运行在Citrix环境中的WPF桌面应用程序,该应用程序应用了Windows 7基本主题。因此,我在我的开发工作站上运行Windows 7以确保UI呈现如预期。
然而,我想将其升级到Windows 10,但我必须找到一种方法在Windows 10中使用Windows 7主题来运行我的应用程序。偶然地(和奇怪地),如果我在Windows 10上以Windows XP兼容模式运行我的应用程序,它会以Windows 7主题呈现,所以操作系统肯定可以呈现这个主题。不过,我不确定我是否想要在激活兼容模式时测试我的应用程序...
我也知道有第三方主题解决方案,但为了排除任何差异,我想使用Microsoft的正版Windows 7主题。
是否有任何技巧/调整/黑客可以简单地在Windows 10中启用Windows 7主题来运行我的应用程序?
2个回答

8

WPF Aero主题位于PresentationFramework.Aero库中,请将其添加为引用。然后在你的App.xaml中添加下面的合并字典以覆盖默认主题。

<ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" />
</ResourceDictionary.MergedDictionaries>

我很高兴看到.NET 4.5中的WPF终于更新,支持Windows 8/10主题(在Windows 8初期没有支持),具体如下:
  • PresentationFramework.Aero2
  • PresentationFramework.AeroLite
今天才看到这个,需要更频繁地使用.NET 4.5 ;)

这确实是一个很好的解决方案。但是,我有一些通过interop托管的传统WinForms屏幕,并且不受WPF主题的影响。我真的希望有一个解决方案,让Windows将Windows 7主题应用于整个进程。 - Tormod Fjeldskår
很遗憾,WPF控件总是自我风格化的。正如您所知,Windows Forms完全是本地的。我能想到的唯一可能做到所有事情的方法是某种兼容性设置,但这并不实际。 - Rudi Visser

0

尝试将表单设置为MDI,使用子窗口作为MDI子窗口,使用Windows 7样式作为其边框,或者添加一些对PresentationFramework.Aero / AeroLite / Aero2的引用,并在您的代码中应用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接