WPF的Windows 7主题?
有什么办法让WPF应用程序看起来像在Windows 7上运行,即使它运行在XP上? 我正在寻找一些可以粘贴的主题。我知道Codeplex上的主题项目( http://www.codeplex.com/wpfthemes ),但是它缺less对DataGrid
支持,极其需要。 我在想也许Windows 7的主题只是一个简单的端口,或者已经存在于某个文件中。 你有任何信息(即使这是坏消息)将不胜感激。
更新
使用@Lars Truijens的想法,我能够获得主要控件的Windows 7的外观,但不幸的是,它不工作的WPF工具包DataGrid
控制,我需要。
DataGrid
看起来像Aero主题一样
DataGrid
应该像这样
所以,如果有人有任何想法,我仍然在寻找解决这个问题的方法。 也许有人已经构build了涵盖WPF工具包控件的Aero主题的扩展? 再次,你有任何信息是非常感激。
更新2 – 问题解决!
为了使Aero主题与WPF Toolkit控件一起工作,您只需添加第二个Aero字典,以便您的App.xaml现在应该如下所示。
<Application.Resources> ... <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml" /> <ResourceDictionary Source="pack://application:,,,/WPFToolkit;component/Themes/Aero.NormalColor.xaml" /> ... </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
另外,我build议closuresDataGrid
控件中的网格线(因为它们看起来很可怕 ):
<DataGrid GridLinesVisibility="None" ...>
WPF在所有Windows版本中都附带了标准的Windows主题。 例如,您可以在Windows XP上安装Aero主题(使用Vista和Windows 7),步骤如下:
- 将PresentationFramework.Aero添加到您的应用程序的参考列表中作为要求
- 编辑你的App.xaml
由此
<Application.Resources> <!-- Your stuff here --> </Application.Resources>
对此
<Application.Resources> <ResourceDictionary> <!-- Put your stuff here instead --> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
资料来源: http : //mrpmorris.blogspot.com/2008/05/using-vista-aero-theme-in-xp-wpf-apps.html
下面的其他select。 确保将相应的程序集作为需求添加到应用程序的参考列表中。
<ResourceDictionary Source="/PresentationFramework.Aero;component/themes/Aero.NormalColor.xaml"/> <ResourceDictionary Source="/PresentationFramework.Classic;component/themes/Classic.xaml"/> <ResourceDictionary Source="/PresentationFramework.Royale;component/themes/Royale.NormalColor.xaml"/> <ResourceDictionary Source="/PresentationFramework.Luna.Homestead;component/themes/Luna.Homestead.xaml"/> <ResourceDictionary Source="/PresentationFramework.Luna.Metallic;component/themes/Luna.Metallic.xaml"/> <ResourceDictionary Source="/PresentationFramework.Zune;component/themes/Zune.NormalColor.xaml"/>
除了Lars的回答和DanM的更新之外:
部署时,您必须将aero Dll添加到安装目录。
您可以通过转到添加到引用并设置CopyLocal=True
的PresentationFramework.Aero的属性来完成此操作。 然后,你将不得不去使用你正在使用的任何部署工具(我喜欢WIX …)并将其添加到已部署文件的列表中。