如何不为WPF指定主题并使用主机操作系统主题?

时间:2010-10-20 01:53:40

标签: wpf

有没有办法不为WPF指定主题,只是让它默认为操作系统使用的内容?由于这个原因,我仍然偏向Winforms。 WinForm应用程序感觉很专业,脚踏实地,操作系统的一部分,而WPF应用程序,包括VS 2010,感觉很重。此外,WPF应用程序在视觉上不一致。它们就像网页,每个开发人员决定控件的大小,而不是将其留给用户和操作系统。我更喜欢遵循指南。

1 个答案:

答案 0 :(得分:2)

默认情况下,WPF将查询系统设置以确定选择了哪个Windows主题。然后它将使用WPF主题,该主题应该与系统的主题紧密匹配。这将为颜色等属性提供样式,并为整体外观(包括动画)提供模板。 WPF主题包括所有内置控件的样式。

请记住,与WinForms不同,WPF控件都是在WPF中创建的。在WinForms中,大多数控件都是使用pInvoke创建的,来自非托管代码。

WinForms可以保证与操作系统相同,因为控件来自操作系统。虽然这是一个很好的副作用,但是缺点是您在与控件外观交互,扩展或修改时的能力有限。

内置WPF主题旨在匹配Windows主题包括:

Windows Vista: themes\Aero.NormalColor.xaml
Windows XP: themes\Luna.NormalColor.xaml
Olive Green Windows XP: themes\Luna.Homestead.xaml
Silver Windows XP: themes\Luna.Metallic.xaml
Windows XP Media Center Edition 2005 and XP Tablet PC Edition 2005: themes\Royale.NormalColor.xaml
Windows Classic: themes\Classic.xaml