代码之家  ›  专栏  ›  技术社区  ›  ATL_DEV

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

wpf
  •  6
  • ATL_DEV  · 技术社区  · 15 年前

    有没有一种方法可以完全不为WPF指定主题,只让它默认为操作系统正在使用的主题?出于这个原因,我仍然偏爱Winforms。WinForm应用程序感觉很专业,重量轻,是操作系统的一部分,而作为WPF应用程序,包括Vs2010,感觉很重。此外,WPF应用程序在视觉上不一致。它们就像网页,每个开发人员都决定控件的大小,而不是由用户和操作系统决定。我更喜欢遵循指导方针。

    1 回复  |  直到 15 年前
        1
  •  2
  •   mbursill    15 年前

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

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

    WinForms可以保证与操作系统的外观相同,因为控件来自操作系统。虽然这是一个很好的副作用,但不利的一面是,您在与控件外观交互、扩展或修改功能方面受到限制。

    为匹配Windows主题而设计的内置WPF主题包括:

    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