zoukankan      html  css  js  c++  java
  • 给WPF的MessageBox启用视觉样式

        WPF的MessageBox为什么会这样

      我的一个同学跟我说:“WPF不是新一代技术吗?怎么连MessageBox都没WinForm 的好看?”

      

    wpf

      上图是Windows Forms 的MesssageBox 与WPF 的MessageBox 的对比,我们发现,WPF没有启用视觉样式。

      有的朋友会问了,那既然WPF没有启用视觉样式,那为什么它的控件的外观和启用样式后一样呢?

      原因是这样的,WPF控件的绘制方式和普通程序不一样,它是采用DirectX 进行绘制的,而MessageBox 是在调用Windows API,所以MessageBox 没有采用DirectX 进行绘制,因此我们没能在MessageBox 上看到这种视觉样式。

      启用WPF应用程序的视觉样式

      我们都知道,Windows Forms应用程序在Main方法中会调用一个方法去启用视觉样式:

      Application.EnableVisualStyles();

      对于WPF我们可以用应用程序清单文件来解决这个问题。

      

    image

      首先,给项目添加一个应用程序清单文件。

      在清单文件的最后,微软已经为我们写好了启用视觉样式的代码,我们只要把它解注释就行。

    <!-- Enable themes for Windows common controls and dialogs (Windows XP and later) -->
       <dependency>
        <dependentAssembly>
          <assemblyIdentity
              type="win32"
              name="Microsoft.Windows.Common-Controls"
              version="6.0.0.0"
              processorArchitecture="*"
              publicKeyToken="6595b64144ccf1df"
              language="*"
            />
        </dependentAssembly>
      </dependency>

      把项目Rebuild一下,再运行,效果如下

      

    image

      怎么还是不行?楼主你骗人!!!

      别急,听我慢慢道来。

      我们打开应用程序生成的目录,

      

    image

      在这有两个exe,我们运行这个生成的WPFVisualStyle.WPF.exe,效果如下,怎么样,我没骗你吧?

      

    image

      为什么会这样

      好了,问题解决了,扯点别的东西。下面那个WPFVisualStyle.WPF.vshost.exe,看名字就知道是在Visual Studio 调试程序时的宿主进程,它是没有嵌入清单的。

      有的朋友可能会问,那我想在调试时看到视觉效果怎么办?

      其实这个就在项目属性的Debug选项卡下面,找到Enable Visual Studio hosting process,把前面的勾去掉,Visual Studio在调试时就会去调用WPFVisualStyle.WPF.exe,我们也就能看到视觉效果了。

      关于应用程序清单文件

      说了这么多,有的朋友可能对应用程序清单文件产生兴趣了,关于它的用法,这里给一篇MSDN的文档供大家参考。

      Manifest Files Reference (Windows)

      本文来自Hamson博客,原文地址:http://www.cnblogs.com/hamson/archive/2013/02/18/enable-wpf-messagebox-visualstyle.html

  • 相关阅读:
    分治法(待整理)
    NP完全问题
    合并排序
    插入排序
    算法基础知识(算法导论)
    分支定界法
    RUCM简介
    大一编程基础培训]==06课==Python的字符串和编码
    python加密包利用pycrypto包进行AES、DES、MD5等加密
    pyecharts模块
  • 原文地址:https://www.cnblogs.com/xuekun/p/4191360.html
Copyright © 2011-2022 走看看