WPF Mouseover Effet Déclencheur pour les Contrôles Enfants
Permet de dire que j'ai ce bout de code:
<Window>
<Window.Resources>
<Color x:Key="MyColor"
A="255"
R="152"
G="152"
B="152" />
<DropShadowEffect x:Key="MyEffect"
ShadowDepth="0"
Color="{StaticResource MyColor}"
BlurRadius="10" />
<Style x:Key="MyGridStyle"
TargetType="{x:Type Grid}">
<Setter Property="Height"
Value="200" />
<Setter Property="Width"
Value="200" />
<Style.Resources>
<Style TargetType="{x:Type TextBlock}">
<Setter Property="Width"
Value="100" />
</Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Height"
Value="100" />
<Setter Property="Width"
Value="100" />
</Style>
</Style.Resources>
<Style.Triggers>
<Trigger Property="IsMouseOver"
Value="true">
<!-- How do I apply my effect when this grid is hovered over to Image and TextBox, but not the grid itself? -->
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
<Grid Style="{StaticResource MyGridStyle}">
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Grid.Row="0"
Grid.Column="0"
Source="image.png" />
<TextBlock Grid.Row="0"
Grid.Column="0"
Text="Hover Over Me" />
</Grid>
</Window>
Fondamentalement, j'ai un Style appliqué à la Grille qui dit tout TextBlock ou de l'Image à l'intérieur, il devrait être des styles à une certaine taille.
Je veux créer un Trigger sur la Grille qui provoque un effet à appliquer à tous les TextBlocks et Images de l'intérieur de la Grille, mais pas à la Grille elle-même.
Je peux appliquer le Déclencheur directement à TextBlock et/ou de l'Image, mais alors l'effet ne se produit que sur chaque élément séparément. J'ai besoin d'avoir l'effet se produire à tout TextBlock et/ou de l'Image à l'intérieur de la Grille, et ce malgré intérieur de l'élément enfant je suis a plané sur.
Quelqu'un peut-il m'aider?
OriginalL'auteur Ristogod | 2011-10-05
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire dans l'autre sens. C'est, ajouter
DataTriggers
àImage
etTextBlock
et de les faire se déclencher surIsMouseOver
pour l'ancêtreGrid
.Remarque: Si vous voulez que ce effet à déclencher dès que la souris est sur le
Grid
vous aurez besoin de mettreBackground
à une valeur, commeTransparent
. Par défaut, leBackground
estnull
et cette valeur n'est pas utilisée dans hit test.OriginalL'auteur Fredrik Hedblad
Une fois, nous avons eu une semblable exigence d'extérieur lumineux UNIQUEMENT le contenu d'une ligne d'une zone de liste, pas la ligne générale. Nous avons pris l'aide de cet article... http://drwpf.com/blog/2008/03/25/itemscontrol-i-is-for-item-container.
OriginalL'auteur WPF-it