2012-09-28 33 views
19

Quería saber cómo puedo cambiar la opacidad del fondo de la ventana de WPF sin afectar los controles secundarios internos. Cuando cambio la propiedad de Ventana 'Opacidad' a 0.5 obtengo una ventana semitransparente, pero la imagen dentro de la ventana también heredó el valor de opacidad 0.5, entonces ¿cómo puedo hacer solo la opacidad para la ventana?Cambiar la opacidad del fondo sin cambiar la opacidad del contenido

+0

Me suscribo a su pregunta para ver si esto es posible, creo que no es así, pero por las dudas. ¿Has intentado configurar el color "Transparente" y agregar, por ejemplo, un rectángulo semitransparente que no afecta al resto de tus objetos? – NestorArturo

Respuesta

30

La ventana es el contenedor principal de todo lo que establece la opacidad en la ventana afectará a todo lo que contiene. Creo que lo que quiere hacer es cambiar el Opacity del Window.Background.

Habilitar una ventana para hacer la transparencia implica un par de cosas que se agregarán. Primero, deberá configurar Window.AllowsTransparency = True y también establecer Window.WindowStyle = None. WindowStyle.None crea una ventana sin los botones minimizar, maximizar y cerrar en la ventana de cromo, por lo que tendrá que manejar eso en la aplicación, junto con cambiar el tamaño y mover la ventana. Una vez hecho todo esto, puede configurar el Window.Background para tener un pincel con un Opacity establecido en él.

El siguiente ejemplo de código le mostrará cómo tener la ventana siempre transparente y establecerá la opacidad del fondo de la ventana para que tenga una opacidad diferente.

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     x:Class="WpfApplication1.MainWindow" 
     x:Name="Window" 
     WindowStyle="None" 
     AllowsTransparency="True"> 
    <Window.Background> 
     <SolidColorBrush Color="White" Opacity="0.5"/> 
    </Window.Background> 
    <Grid> 
     <!--Window Content--> 
    </Grid> 
</Window> 

Siempre puede establecer el fondo de la ventana en transparente si solo desea que los elementos en la ventana sean visibles.

+0

Im trabajando con plantillas de estilo. Para hacer que esto funcione con el creador de propiedades, configuré el alfa de mi color de fondo en el nivel de opacidad deseado y copié el código rgb de fondo en el generador de fondos. :) ¡Funciona perfectamente! – C4u

Cuestiones relacionadas