2010-10-20 99 views
5

有没有办法根本不为WPF指定主题,只是让它默认为操作系统使用?由于这个原因,我仍然偏爱Winforms。 WinForm应用程序感觉专业,轻便,并且是操作系统的一部分,而WPF应用程序(包括VS 2010)感觉很重。而且,WPF应用程序在视觉上不一致。它们就像网页,每个开发人员都决定控件的大小,而不是将其留给用户和操作系统。我更愿意遵循指导原则。如何不为WPF指定主题并使用主机操作系统主题?

回答

1

默认情况下,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