Comment voulez-vous remplacer l'opacité d'un contrôle parent dans WPF?
Lorsque vous réglez l'opacité sur un Grid
dans WPF, tous les éléments enfants semblent hériter de son Opacity
. Comment pouvez-vous avoir un enfant de l'élément hérite pas de la mère de l'opacité?
Par exemple, la mère de la grille a un enfant de grille dans le milieu avec un arrière-plan rouge, mais l'arrière-plan semble rosé à cause de la mère de l'opacité. J'aimerais que l'enfant de la grille d'avoir un solide de couleur, non transparent fond:
<Grid x:Name="LayoutRoot">
<Grid Background="Black" Opacity="0.5">
<Grid.RowDefinitions>
<RowDefinition Height="0.333*"/>
<RowDefinition Height="0.333*"/>
<RowDefinition Height="0.333*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.333*"/>
<ColumnDefinition Width="0.333*"/>
<ColumnDefinition Width="0.333*"/>
</Grid.ColumnDefinitions>
<-- how do you make this child grid's background solid red
and not inherit the Opacity/Transparency of the parent grid? -->
<Grid Grid.Column="1" Grid.Row="1" Background="Red"/>
</Grid>
</Grid>
Vous devez vous connecter pour publier un commentaire.
J'ai pu obtenir quelque chose comme ceci dans le plus pur xaml à l'aide d'un Pinceau pour peindre les principales grilles de fond.
De cette façon, seuls les parents de la grille aura son opacité et ses éléments enfant ne sera pas en hériter.
Vous pouvez simplement la superposition de deux grilles à l'intérieur de votre grille de mise en page. La première serait défini comme votre grille, moins votre rouge plus profond de la grille. La deuxième serait défini avec les mêmes colonnes et de lignes, avec un arrière-plan transparent. Le seul enfant de cette grille serait votre plus profond de la grille.
Si vous souhaitez que tous les enfants du conteneur parent pour définir leur propre opacité indépendamment des parents, vous pouvez simplement régler le canal alpha de la mère arrière-plan du panneau (au lieu de définir l'opacité) pour obtenir un peu d'arrière-plan transparent, sans impact sur l'enfant-éléments. Quelque chose comme cela, où l'0C dans le fond, c'est le canal Alpha (l'AA dans AARRGGBB):
Cependant, si vous souhaitez que tous les enfants, sauf un à adhérer à la société mère de l'opacité qui est un peu plus compliqué. Vous pourriez être en mesure de le faire avec un ControlTemplate et quelques trucs astucieux avec les canaux Alpha ou d'un masque d'opacité. Si non, on peut construire une sorte de contrôle personnalisé qui vous a donné le comportement souhaité. Je dois réfléchir un peu pour voir ce qui pourrait être la meilleure solution pour ce type de scénario.