如何加载WPF主题?

时间:2011-05-06 14:39:04

标签: wpf

我对WPF主题和WPF皮肤之间区别的理解如下:

  • WPF外观是由应用程序加载的一组资源。
  • WPF主题是操作系统处理的一组资源。

要加载皮肤,我只需调用Application.Current.Resources.MergedDictionaries.Add(mySkin);

但是,我没有看到任何加载主题的方法。

这是记录还是可用?

我应该访问System.Windows.SystemResources内部类吗?

3 个答案:

答案 0 :(得分:4)

您可以将它们作为ResourceDictionary加载:

<Window
  x:Class=”TestProject.Window1?
  xmlns=”http://schemas.microsoft.com/winfx/2006/xaml/presentation”
  xmlns:x=”http://schemas.microsoft.com/winfx/2006/xaml”>
  <Window.Resources>
    <ResourceDictionary
    Source=”/presentationframework.aero;component/themes/aero.normalcolor.xaml” />
  </Window.Resources>
</Window>

注意:您需要引用PresentationFramework.Aero.dll。

答案 1 :(得分:2)

皮肤和主题之间有一个微妙的区别,你之所以遇到问题的原因可能源于此:

  

在WPF中,主题和蒙皮需要   对他们的微小变化   含义。主题指的是   控制外观和一致性   应用程序UI的匹配   操作系统。例如,WPF   申请可以为主题   Windows Aero主题或Windows   经典主题。剥皮指的是   改变应用程序的外观。   换句话说,申请或出租   用户选择皮肤来改变   应用程序的外观和感觉。

     

Robby Ingrebertsen,在工作的同时   WPF团队将其简化为   如下:

     

在这里,我们一般都说“主题”是指系统主题    “皮肤化”是指对特定应用的更改。这有助于    澄清我们的内部沟通

来自here

基本上,如果您希望自己的应用看起来像 Windows主题之一,即当前的Windows主题 - 您不必在应用中设置任何样式,它会选择一个预定义的XAML皮肤,它自动地类似于它。但是,如果您要为应用程序设置样式,则可以在应用程序中为应用程序创建 skin

至于加载Windows主题,this answer可能会有所帮助

答案 2 :(得分:0)

(回答我自己的问题) 将资源字典作为主题加载的方法是将其添加到generic.xaml资源字典的合并字典列表中。