Bonjour,
Je me suis créé un petit Style qui permet de transformer une CheckBox en un bouton rotatif à 3 états.
Au final, j'obtiens un gros bouton qui tourne, entouré de 2 labels : ON et OFF.
Pour l'instant, quand je clique n'importe où sur mon contrôle, l'état de ma CheckBox change et j'applique une transformation pour que mon bouton pointe vers le label correspondant à son état : checked => ON, unchecked => OFF.
J'obtiens ça grâce à ces triggers :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 <ControlTemplate.Triggers> <EventTrigger RoutedEvent="CheckBox.Checked"> <EventTrigger.Actions> <BeginStoryboard Storyboard="{StaticResource OnMouseClick_GoToOn}" /> </EventTrigger.Actions> </EventTrigger> <EventTrigger RoutedEvent="CheckBox.Unchecked"> <EventTrigger.Actions> <BeginStoryboard Storyboard="{StaticResource OnMouseClick_GoToOff}" /> </EventTrigger.Actions> </EventTrigger> </ControlTemplate.Triggers>
Ce que j'aimerai faire, c'est que :
1) quand je clique sur le bouton central, ma CheckBox change d'état et que mon bouton subisse l'animation correspondante
2) quand je clique sur le Label "ON", ma CheckBox passe à l'état checked et que mon bouton subisse l'animation correspondante
3) quand je clique sur le Label "OFF", ma CheckBox passe à l'état unchecked et que mon bouton subisse l'animation correspondante
J'ai déjà réussi à faire en sorte que quand je clique sur mes labels, le bouton subisse la bonne transformation :
Malheureusement, je ne sais pas comment faire pour lancer un évènement CheckBox.Check ou CheckBox.Uncheck suite à ces clics sur les labels, afin que l'état de ma CheckBox se mette à jour correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <ControlTemplate.Triggers> <EventTrigger SourceName="offLabel" RoutedEvent="Label.MouseLeftButtonDown"> <EventTrigger.Actions> <BeginStoryboard Storyboard="{StaticResource OnMouseClick_GoToOff}" /> </EventTrigger.Actions> </EventTrigger> <EventTrigger SourceName="onLabel" RoutedEvent="Label.MouseLeftButtonDown"> <EventTrigger.Actions> <BeginStoryboard Storyboard="{StaticResource OnMouseClick_GoToOn}" /> </EventTrigger.Actions> </EventTrigger> </ControlTemplate.Triggers>
Quelqu'un aurait une idée de la marche à suivre ?
De plus, je ne sais pas non plus comment lui dire que quand je clique sur le bouton central, je dois lancer un évènement qui correspond à l'inverse de l'état actuel de ma CheckBox : si elle est checked, on lance CheckBox.Uncheck ; si elle est unchecked, on lance CheckBox.Check.
Merci d'avance !
Partager