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 :
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>
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.

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 !