WPF程序在Windows 7下应用Windows 8主题

这篇博客介绍如何在Windows 7下应用Windows 8的主题。

首先我们先看一个很常见的场景,同样的WPF程序(样式未重写)在不同的操作系统上展示会有些不同。这是为什么呢?WPF程序启动时会加载与操作系统对应的主题。下面将列出常见的OS主题与WPF主题的关系。

针对不同操作系统的主题,WPF程序会加载不同的主题assembly。这样就形成了同样的XAML代码在不同的OS中展示效果。

回到这篇博客的主题,为Windows 7下的WPF程序应用Windows 8主题。通过上面的表格,可以知道,如果我们能够给WPF程序应用上PresentationFramework.Aero2.dll的主题就可以了。

1. WPF程序中添加PresentationFramework.Aero2.dll引用;

2. 将PresentationFramework.Aero2.dll的Copy Local属性设置为True;

3. 在App.xaml中添加下面的Resource;

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/PresentationFramework.AeroLite;component/themes/AeroLite.NormalColor.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

此时在Windows 7环境下运行应用Windows 8主题的程序,结果如下:

可以通过ILSpy获得WPF不同主题assembly对应的样式字典,

感谢您的阅读!

时间: 2024-10-23 03:41:07

WPF程序在Windows 7下应用Windows 8主题的相关文章

Windows Azure下的Windows VM密码重置

Windows azure下的windows vm密码重置 说到密码问题,相信管理员都头疼,尤其作为一个大企业的管理员,服务器密码的使用很是麻烦,为什么这么说呢,因为大企业要求的信息安全,要求用户密码45天更改一次,当然不更改的话那就意味着过期,就无法使用了,还有一种情况那就是用户的密码,对于不在公司办公,而是外派的用户不经常访问偶尔访问公司的信息系统的用户密码确实是一个问题,对于我们公司来说,就这样的问题比较多,经常让助理发邮件给管理员重置他们的密码,这样给管理员带来很大困扰,后来呢,为了彻底

Windows azure下的Linux vm密码重置

上一篇我们介绍了windows azure下的windows vm下的密码忘记重置,今天介绍一下,在windows azure下的linux vm的密码重置. 密码忘记有两种方式,一种是知道需要重置的账户密码,一一种是不知道需要重置的密码. 比如上届管理员创建完后工作没交接就走了,本届管理员不知道密码,不知道重置那个密码,所以windows azure就用覆盖的方法来完成从重置密码操作. 先决条件 微软 Azure Linux 代理 2.0.5 或更高版本.请注意,大多数 Azure 虚拟机 L

WPF 程序在 Windows XP 下报错:The image format is unrecognized.

最近做的一个 WPF 程序,在 Windows 7 或以上版本的系统中,测试都很正常,在 Windows XP 下运行时一开始就报了个错误: {     "ClassName" : "System.Windows.Markup.XamlParseException",     "Message" : "The image format is unrecognized.",     "Data" : {   

Windows技巧|如何在Windows 10在锁屏状态下打开某种应用程序?

本文标签:    电脑技巧 Windows技巧 Win10的锁屏界面 互联网杂谈 在Win10的锁屏界面,右下角有三个图标,中间有个像时钟的图标就是所谓的"轻松使用"按钮,里面有讲述人.放大镜.屏幕键盘等功能,这些功能我们可以修改成我们常用的应用程序,这样将大大的方便我们的操作,那么该如何修改呢? 默认情况下在锁屏界面点击右下角中间的图标会弹出"轻松使用"菜单 具体方法如下: 1.在Cortana搜索栏输入regedit,按回车键进入注册表编辑器; 2.定位到:HK

windows系统下c语言暂停程序

原文:windows系统下c语言暂停程序 windows系统下,很多C语言初学者的调试时,往往没看到结果程序就退出了,据我所知的方法主要有以下几种 方法一: #include int main() { system("pause");//利用了DOS命令,按任意键继续 return 0; } 方法二: #include int main() { getchar();//须按回车键结束,不是任意键 return 0; }

Windows系统下用命令行编译C/C++程序过程总结

转自:http://www.cnblogs.com/caikehe/archive/2013/01/12/2858017.html (1)先用记事本编写如下所示的代码,并另存为hello.cpp,假设其保存路径为C:\Users\Administrator\Desktop. #include using namespace std; int main() { cout<<"hello world!"<<endl;< span="">

Windows 7下一个:该应用程序不能正常启动(0xc0150002)

         在新系统中正确安装QQ2010无法执行.同一时候安装的TM2009也无法执行.相同显示为"应用程序无法正常启动(0xc0150002).请单击"确定"关闭应用程序".在百度.Google中搜索中发现有很多人遇到了相同的问题,并且软件也不限于腾讯软件,有摄像头.CAD的各种软件.            打开查看后发现大多数答案并不对,也无法解决问题.经过我的研究以上软件,发现这些软件都是由Visual C++ 开发.可是查看OS已安装的软件并没有安装

windows server 下允许端口或者程序运行的小技巧

背景:在windows server服务器中,部署了一个应用程序,如http协议的应用程序时,当外网通过http协议访问网页时,就需要获得服务器的允许入站,网页内容才可以正常显示在访问者的浏览器中,否则,就无法正常显示网页,结果类似如下: 那么,怎样建立正常访问网页的入站规则呢? 通常,在测试一个网站时候,我们就会禁用windows防火墙,毕竟,禁用了防火墙,一切访问变得没有阻力.如下图所示: 而当我们正式部署网站时,windows防火墙还是应该启用的,且只能通过设置一些访问规则来让程序和网页能

如何实现程序的重新启动(windows环境下)

背景: 在游戏程序的开发中,经常会碰到这样的情况,运行游戏更新程序后需要重新启动更新程序,在游戏内修改视频等相关设置后需要重新启动游戏程序,这样的操作该如何实现呢? 解决方案: 一种解决方案是通过等待来启动新的程序,但是这样的实现方式在极端情况下会出现问题,假设某游戏程序每次在一个物理机上只允许启动一个进程,如果关闭旧的进程因为一些原因而造成延迟,那么启动新的进程时会失败,试想游戏更新程序结束后,提示玩家游戏将重启,而游戏并没有重启,这种体验是相当糟糕的. 另一种解决方案,为了保证程序A关闭后与