Como hacer System.Windows.MessageBox botones de estilo?
-
19-09-2019 - |
Pregunta
Estoy usando System.Windows.MessageBox en una aplicación WPF, y por alguna razón sus botones se labró la forma en que Windows 2000 - No WinXP, no Aero, no el defecto WPF. Sólo gris con bordes básicos 3d.
¿Cómo puedo hacer que aparecen con un estilo más moderno? (No importa cuál)
Solución
Puedes solucionar este problema con un manifiesto. Consulta este artículo para obtener instrucciones paso a paso: ¿Por qué recibo diálogos de estilo antiguo archivo y cuadros de mensaje con WPF
Básicamente, hay que añadir un archivo XML denominado un 'manifiesto' a su aplicación.
Actualización:
En realidad, es muy fácil de hacer esto en VS2008. Ir al proyecto Properties-> aplicaciones y haga clic en el botón 'Vista UAC Configuración'. Esto creará automáticamente un archivo de manifiesto de aplicación y abrirlo. Editar este archivo de la siguiente manera:
Justo después de la línea:
</trustInfo>
Pegar en la sección dependencia siguiente:
<!-- Activate Windows Common Controls v6 usage (XP and Vista): -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
Mi manifiesto completo es el siguiente:
<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity version="1.0.0.0" name="MyApplication.app"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
<!-- UAC Manifest Options
If you want to change the Windows User Account Control level replace the
requestedExecutionLevel node with one of the following.
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
If you want to utilize File and Registry Virtualization for backward
compatibility then delete the requestedExecutionLevel node.
-->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
</requestedPrivileges>
</security>
</trustInfo>
<!-- Activate Windows Common Controls v6 usage (XP, Vista, Win 7) to support themed dialogs: -->
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="*"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
</asmv1:assembly>
Después de hacer esto, simplemente construir su aplicación, ejecutar, y listo, los botones de diálogo de mensaje de toma en el estilo del tema del sistema.