问题
WPF的MessageBox看上去像XP系统的风格,有种老系统的味道。但WPF作为微软的新一代技术,为何在MessageBox上反而不如同根同源而更古早的Winform?
原因
WPF控件的绘制方式和普通程序比如Winform不一样,它是采用 DirectX 进行绘制的,而 MessageBox 是在调用Windows API,所以 MessageBox 没有采用 DirectX 进行绘制,因此我们没能在MessageBox 上看到这种视觉样式。
解决
仔细观察Winform程序的Main方法会发现,方法中会调用一个方法去启用视觉样式
Application.EnableVisualStyles();
而对于WPF程序而言,可以采用 应用程序清单文件 来解决此问题
在项目中添加一个应用程序清单文件
然后进入清单文件,找到如下代码:
<!-- 启用 Windows 公共控件和对话框的主题(Windows XP 和更高版本) -->
<!--
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
-->
将注释解除后重新Bulid即可解决此问题
附记
如果重新Bulid后没有改变,在项目属性的Debug选项卡下面,找到Enable Visual Studio hosting process,把前面的勾去掉即可!