2011-03-20 7 views
8

Por lo tanto, los botones de mi cuadro de mensaje en WPF no tienen el mismo sistema operativo.
Incluso intenté this method y no funcionó.Los botones WPF MessageBox no tienen el tema del sistema operativo

Tengo un manifiesto, estoy corriendo bajo Windows 7 Ultimate x86 y .NET Framework 4 Client Profile.


EDIT: Funciona ahora.

+0

He actualizado mi respuesta para usted. – Prisoner

+2

¿qué hiciste para que funcione? Cuando construyo obtengo el siguiente error: Error No se pudo encontrar el archivo 'Microsoft.Windows.Common-Controls, Version = 6.0.0.0, Culture = *, PublicKeyToken = 6595b64144ccf1df, ProcessorArchitecture = *, Type = win32' Estoy usando Windows 7 x64 –

+0

@AdeA Desde Visual Studio, vaya a Propiedades del proyecto -> Seguridad -> Desmarque la casilla de verificación "Habilitar configuración de seguridad de ClickOnce" Esto me ha solucionado el problema. –

Respuesta

9

Los cambios que ha realizado se han guardado pero no se pueden ver durante la depuración en VS. Para arreglar esto, haga clic derecho en su proyecto y haga clic en "Propiedades" y luego vaya a "Depurar". Hay una casilla de verificación en la parte inferior de la página llamada "Habilitar el proceso de alojamiento de Visual Studio" - desmarque esto. Se recomienda reiniciar Visual Studio después de realizar este cambio.

Como alternativa, puede compilar sin depuración (CTRL + F5).

+0

Por favor, elabore ... – Vercas

+0

@Vercas respuesta actualizada, tuvo que arrancar en Windows. – Prisoner

+0

Eso es muy extraño, funcionó bien para mí. ¿Estás llamando 'MessageBox.Show()'? – Prisoner

3
+0

Esto realmente no soluciona el problema, simplemente lo evita. – Prisoner

+0

De acuerdo y entendido, simplemente estoy tratando de ayudar a solucionar el problema :) – Stuart

+0

No dije que rechacé las alternativas. – Vercas

17

Este es un fallo extraño en WPF, no se encuentra la instalación de cañerías para activar los estilos visuales. Doblemente extraño porque esto no es difícil de hacer.

La solución alternativa es modificar el manifiesto que se incrusta en su programa. Seleccione su proyecto EXE, luego Proyecto + Agregar nuevo elemento, General, seleccione Archivo de manifiesto de aplicación. Obtiene el manifiesto predeterminado que se incrusta, tenga en cuenta los elementos <assemblyIdentity> y <trustInfo>. Pega esto en el medio:

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

El cuadro de mensaje tendrá ahora el estilo visual del sistema operativo, el Aero look con el botón de cierre brillando por defecto en Vista y hacia arriba.

Si hace esto en Visual Studio 2010, esta entrada de manifiesto ya está presente pero está comentada. Lo encontrarás en la parte inferior del archivo. Basta con retirar los comentarios, la <!--<dependency> antes y después de la --></dependency>

Tenga en cuenta que esto se manifieste no está habilitado cuando se ejecuta con el estudio del proceso de alojamiento de Visual permitido depurador y. Ese es un archivo .exe diferente en su directorio de compilación, yourapp.vshost.exe. Proyecto + Propiedades, pestaña Depuración, desplácese hacia abajo, desmarque "Habilitar el proceso de alojamiento de Visual Studio". Eso tiene algunos efectos secundarios relacionados con la seguridad, no tiene mucho sentido en realidad hacerlo ya que su usuario nunca tendrá este problema.

+0

Eso es lo que hice y no funcionó ... – Vercas

+0

Funcionó para mí y muchos otros programadores. ¿Qué hiciste mal? Publica el contenido de tu manifiesto en tu pregunta. –

+0

Ok. También publicaré un archivo ... – Vercas

Cuestiones relacionadas