2009-10-03 12 views
9

¿Cómo puedo vincular el color de fondo de ventana predeterminado del tema a un fondo de ventana?Cómo enlazar el fondo de la ventana con el color de fondo de la ventana de un tema?

He intentado lo siguiente:

<Window x:Class="Shell" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Shell" 
    Height="300" 
    Width="300" 
    Background="{DynamicResource WindowBackgroundBrush}" 
    > 

Pero el color de fondo renders en negro y que no me parece bien cuando se utiliza el tema Luna. Usando el tema Luna, esperaría que el color beige/marrón se encuentre a menudo en Windows XP.

ACTUALIZACIÓN: Después de leer sus respuestas, jugando con StyleSnooper y pensar un poco más sobre esto he llegado a la siguiente conclusión:

La Ventana utilizará SystemColors.WindowBrush como su color de fondo por defecto. Este color es blanco en la mayoría de los temas que he probado y probablemente esté bien. Creo que el blanco es también el color de fondo de Windows en WinForms. Sin embargo, el color de fondo del formulario predeterminado en WinForms no es el fondo de la ventana, sino el control. Entonces, si quiero ese color, uso SystemColors.ControlBrush como lo indica el Lucas.

En un momento estaba tratando de lograr el color de control pardusco/beige de WinForms en Windows XP. Probablemente esto no sea posible en Windows Vista ya que el control de color en Vista es algo gris. Ejecutar una aplicación WinForms en Windows Vista no lo representará como beige/marrón, sino gris. En este caso, creo que tenemos que aplicar nuestros propios estilos personalizados para lograr el aspecto "original" de Windows XP en Vista.

Gracias a todos por ayudarme a resolver esto!

+0

¿Has resuelto esto? Me gustaría cambiar el fondo de un desencadenador. – nportelli

+0

Esto: http://stackoverflow.com/a/1955583/492 –

Respuesta

4

¿La aplicación de un tema en realidad anula las escobillas del sistema como era de esperar? Si es así, usted debería ser capaz de hacer esto:

<Window ... 
    Background="{x:Static SystemColors.WindowBrush} 
    ...> 

Editar

De acuerdo con el comentario de Manga, es probable que desee utilizar SystemColors.ControlBrush para lograr el efecto deseado, ya que en la mayoría WindowBrush sistemas es blanco. ControlBrush es el color "grisáceo" que está viendo en Windows XP.

+1

obtengo blanco de fondo de esto, pero siguiendo esa sugerencia, podrías probar 'SystemColors.ControlBrush',' SystemColors.ControlDarkBrush', etc. – Lucas

+0

+1 por apuntarme en la dirección correcta.Sin embargo, me gustaría aceptar una respuesta donde SystemColors.ControlBrush se aplica al fondo como sugiere Lucas. En sus marcas... –

1

Hubiera pensado que simplemente dejando la propiedad Background desarmada en su elemento Window lograría esto. El objetivo de un tema es que afecta a la apariencia predeterminada de elementos visuales como Window.

EDIT Puede consultar StyleSnooper - le permitirá ver la plantilla predeterminada para un control (como Ventana). Debería poder determinar a qué propiedad es vinculante para cada tema.

+0

Al aplicar el tema Luna y dejar la propiedad de Fondo de mi Ventana sin configurar me da un fondo blanco. Esperaba un fondo beige/marrón como el que obtendrías en WinForms en Windows XP o en un fondo grisáceo como el que obtienes en WinForms en Vista. Si el fondo blanco es el comportamiento correcto, tal vez deba reformular mi pregunta. –

+0

+1 por hacerme pensar diferente sobre esto y apuntarme a StyleSnooper! –

Cuestiones relacionadas