J'ai un modèle de tabitem remplacé et créé mon propre style personnalisé. Cependant, je ne suis pas sûr de savoir comment écrire des déclencheurs d'événement pour l'événement mouse over.Comment animer la souris sur un événement à l'aide des déclencheurs WPF pour un élément d'onglet?
Désolé pour la réponse tardive, je ne reçois pas de notification pour les commentaires (peut-être cela devrait être changé?). Ok, je vais essayer d'expliquer cela plus en détail. Je n'ajoute pas de commentaire car je dois poster un exemple de code. Disons que vous avez un contrôle, un contrôle. Supposons que vous ayez également défini un certain nombre de styles en tant que ressources. donc:
<LinearGradientBrush x:Key="NormalGradientBrush">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="NormalForeground">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Gray" Offset="1" />
</LinearGradientBrush>
<LinearGradientBrush x:Key="MouseOverGradientBrush">
<GradientStop Color="Red" Offset="0" />
<GradientStop Color="Green" Offset="0.2" />
<GradientStop Color="Black" Offset="1" />
</LinearGradientBrush>
<RadialGradientBrush x:Key="MouseOverForeground" GradientOrigin="0.3,0.5">
<GradientStop Color="Gray" Offset="0" />
<GradientStop Color="Black" Offset="1" />
</RadialGradientBrush >
Maintenant que vous avez le contrôle de l'élément onglet:
<LinearGradientBrush x:Key="MouseOverGradientBrush">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="Red" Offset="1" />
</LinearGradientBrush>
<Style x:Key="StyleTabItem"
TargetType="{x:Type TabItem}">
<Setter Property="Foreground"
Value="{StaticResource NormalForeground}" />
<Setter Property="BorderBrush"
Value="Black" />
<Setter Property="Background"
Value="{StaticResource NormalGradientBrush}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type TabItem}">
<Grid SnapsToDevicePixels="true">
<Border x:Name="Bd"
Background="{TemplateBinding Background}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="1,1,1,0"
Padding="{TemplateBinding Padding}">
<ContentPresenter x:Name="Content"
HorizontalAlignment="Center"
VerticalAlignment="Center"
SnapsToDevicePixels="True"
ContentSource="Header"
RecognizesAccessKey="True" />
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="true">
// what here?
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
La question est, comment puis-je dire WPF faire 3 secondes d'animation de la brosse courant MouseOverGradientBrush et du premier plan actuel à MouseOverForeground sur l'événement MouseOver? J'ai vu dans les exemples que vous faites cela en changeant les décalages du dégradé un par un. Je le veux maintenant. Cela augmente la taille du code et peut finir par être très désordonné. En outre, les balais peuvent avoir un nombre différent de décalages ou l'un peut être linéaire et l'autre radial. J'espère que c'est plus clair.
Hey Foovanadil oui ça marche. Je vous remercie. Maintenant, existe-t-il un moyen de passer à MouseOverGradientBrush sur l'événement MouseOver en utilisant un storyboard (pas en spécifiant chaque décalage séparément, mais en spécifiant simplement la ressource de pinceau dans son ensemble)? – immuner
Vous ne savez pas ce que vous voulez dire. Vous voulez changer la ressource de pinceau réelle à un pinceau différent sur la souris sur le déclencheur? Pouvez-vous expliquer le spécifique de votre situation plus loin? Mon instinct serait de spécifier différentes ressources de pinceau au moment du design, puis d'échanger la ressource de pinceau que vous utilisez dans le déclencheur (par opposition à avoir une ressource de pinceau et essayer de changer son contenu). Cette approche n'est-elle pas possible dans votre situation? –