2009-06-11 8 views
14

Dans mon application, je voudrais avoir une fenêtre transparente, mais entièrement opaque enfants contrôles en dessous. Cependant, WPF rend tous les enfants transparents.élément opaque dans un transparent dans WPF

Voir le code XAML ci-dessous. La grille est semi-transparente à 50% comme prévu mais le rectangle qu'elle contient n'est pas opaque même si elle est opaque = "1". Y'a-t-il une quelconque façon de réussir cela?

<Window x:Class="WpfApplication10.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" AllowsTransparency="True" Height="300" ResizeMode="NoResize" Width="300" WindowStyle="None" Background="Transparent" > 

    <Border BorderBrush="black" BorderThickness="7" CornerRadius="10"> 
     <Grid Background="Red" Opacity="0.5"  > 

     <Rectangle Width="100" Height="100" Fill="white" Opacity="1"/> 

    </Grid> 
    </Border></Window> 

grâce, cellik

Répondre

19

La raison pour laquelle votre rectangle n'est pas complètement opaque est parce que votre conteneur (la grille) a une opacité de 0,5, et l'opacité se hérita aux objets enfants.

Au lieu de cela, essayez de changer la brosse en arrière-plan de la grille à quelque chose comme semi-transparent:

<Grid Background="#66ff0000"> 

Cela devrait vous donner une grille semi-transparente et un rectangle complètement opaque.

+0

Merci, cette réponse fonctionne vraiment! – ariso

+0

Le rectangle est complètement opaque car la couleur est "blanche". Si la couleur est rouge, par exemple, le rouge n'est pas rouge à 100%. Avez-vous une solution pour obtenir le rectangle 100% rouge? –

+0

Tant que l'opacité de la grille n'est pas spécifiée, elle doit également fonctionner avec un rectangle rouge à 100%. Notez que la modification est à la grille, pas la balise Rectangle. – micahtan