我对WPF主题和WPF皮肤之间区别的理解如下:
要加载皮肤,我只需调用Application.Current.Resources.MergedDictionaries.Add(mySkin);
但是,我没有看到任何加载主题的方法。
这是记录还是可用?
我应该访问System.Windows.SystemResources内部类吗?
答案 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资源字典的合并字典列表中。