Comment définir une fonction d'événement par l'intermédiaire d'un style?
J'ai plusieurs GUI de contrôle des éléments dont certains sont supposés générer la même action (code-behind de l'appel de fonction) sur l'interaction de la souris (MouseEnter, MouseLeave).
[edit] je suis de l'exécution de certains non style de fonctionnalités connexes dans mon gestionnaires d'événements.
Droit maintenant, je suis en utilisant des attributs d'événement dans chaque contrôle:
<Button Name="Button" Content="Button 1"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
PreviewMouseDown="Button1_PreviewMouseDown" PreviewMouseUp="Button1_PreviewMouseUp" />
<Button Name="NotInteractingButton" Content="Button 2"
/><!-- this button has no MouseOver-effects -->
<ToggleButton Content="ToggleButton"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave" />
<!-- needs to use IsMouseDirectlyOver on the slider knob... -->
<Slider Name="HorizontalSlider"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
<Slider Name="VerticalSlider" Orientation="Vertical"
MouseEnter="GeneralMouseEnter" MouseLeave="GeneralMouseLeave"
ValueChanged="Slider_ValueChanged" />
Depuis de nombreuses commandes dans cet exemple, appelant les deux mêmes fonctions "GeneralMouseEnter" et "GeneralMouseLeave", je voudrais être en mesure de définir un style ou quelque chose de similaire à encapsuler ce comportement.
[edit - clarification]
Ce qui est censé devenir une sorte de plugin plus tard.
(Inclure le code et les fichiers XAML de l'interface graphique du programme et de définir le style de chaque interactive élément de contrôle...)
De ce que j'ai trouvé sur le web, je peux utiliser EventTriggers
comme dans cet exemple:
<Style.Triggers>
<EventTrigger RoutedEvent="Click">
<EventTrigger.Actions>
<BeginAction TargetName="SomeAction" />
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
Je ne sais pas si et comment appeler des fonctions au sein d'une action.
- Est-il possible d'obtenir cette fonctionnalité en créant un style avec l'action + déclencheur être appliqué à chaque commande? Comment faire?
- Comment puis-je attribuer plusieurs styles (pour de multiples événements d'interaction) à un contrôle?
- Est là, peut-être même d'une façon plus propre à atteindre ce comportement?
- [modifier]
Que faire si je veux, disons, avoir de l'interaction de la souris sur tous les curseurs dans mon INTERFACE?
Vous devez vous connecter pour publier un commentaire.
Martin,
vous pouvez affecter un gestionnaire d'événement directement à partir d'un style à l'aide d'un EventSetter:
@ColinE:
Malheureusement, cela semble être commune et répandue sur WPF styles: Bien que leur nom l'indique ils sont, à l'instar de ce que vous dites, uniquement destinés à définir l'apparence, ils sont en fait bien plus: Il est utile pour afficher des styles plus généralement comme un raccourci pour assigner un ensemble de propriétés d'un contrôle.
BasedOn="..."
.