WPF MessageBox按钮不是OS主题

时间:2011-03-20 16:14:21

标签: c# wpf .net-4.0 messagebox

因此,WPF中我的消息框的按钮不是操作系统的主题 我甚至试过this method但它没有用。

我有一个清单,我在Windows 7 Ultimate x86和.NET Framework 4 Client Profile下运行。


编辑:现在有效。

3 个答案:

答案 0 :(得分:17)

这是WPF中的一个奇怪的故障,它缺少激活视觉样式的管道。双奇,因为这不难做到。

解决方法是修改嵌入程序中的清单。选择您的EXE项目,然后选择Project + Add New Item,General,选择Application Manifest File。您获得了嵌入的默认清单,请注意<assemblyIdentity><trustInfo>元素。将其粘贴在:

之间
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
        />
    </dependentAssembly>
  </dependency>

消息框现在将具有操作系统的视觉样式,默认情况下在Vista及更高版本上具有发光关闭按钮的Aero外观。

如果在Visual Studio 2010中执行此操作,则此清单条目已存在,但已注释掉。你会在文件的底部找到它。只需删除评论<!-- <dependency> --></dependency>之后的{{1}}

请注意,在启用调试器并启用Visual Studio主机进程的情况下,未启用此清单。这是构建目录中的一个不同的.exe文件,yourapp.vshost.exe。 Project + Properties,Debug选项卡,向下滚动,取消选中“启用Visual Studio托管过程”。这有一些与安全相关的副作用,实际上没有太多意义,因为你的用户永远不会遇到这个问题。

答案 1 :(得分:9)

您所做的更改已保存,但在VS中进行调试时无法查看。要解决此问题,请右键单击您的项目,然后单击“属性”,然后转到“调试”。页面底部有一个名为“启用Visual Studio托管过程”的复选框 - 取消选中此项。建议您在进行此更改后重新启动visual studio。

或者,您可以在不调试的情况下构建(CTRL + F5)。

答案 2 :(得分:3)