Salut à tous, je galère encore pas mal en xaml.
Contexte : appli bureau, WPF avec MVVM, développée sous VS2012, tous les écrans sont des usercontrols.
Je dois rajouter, sur un écran, un contrôle à bascule qui va m'alimenter une variable dans le code (VB) qui sera certainement stockée dans la classe Application. Çà, je devrais arriver à le faire.
Je voudrais que lors de la bascule, la couleur du texte de mon contrôle change, darkgrey lorsque inactif, red lorsque actif.
A coté, j'ai un textblock, ainsi qu'un conteneur pour mettre en fils un autre écran. Je voudrais donc aussi que sur cette même bascule, la couleur de mon textblock, ainsi que la couleur de texte contenu dans l'écran fils (représenté par 2 textblock dans le datatemplate d'une listview) change de la même manière, couleur par défaut de leur style lorsque bascule inactive, red lorsque active.
Pour des raisons de design, mon contrôle à bascule aura un visuel comme le textblock à coté. Je suis donc parti sur un togglebutton dont je redéfini le template. Mais je bloque sur le trigger du style. Je dois remonter jusqu'à la propriété IsChecked du toggle, mais comment faire :
Code xaml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 <!-- Title View --> <TextBlock Grid.Column="1" Style="{StaticResource TitleStyle}" <----- textblock qui sera à traiter aussi Text="{Binding CurrentViewModel.Title}"/> <ToggleButton VerticalAlignment="Center" HorizontalAlignment="Center"> <ToggleButton.Template> <ControlTemplate TargetType="{x:Type ToggleButton}" > <TextBlock Text="Mode test"> <TextBlock.Style> <Style BasedOn="{StaticResource TitleStyle}"> <Style.Triggers> <Trigger Property="IsChecked" Value="True"> <------ c'est ici que je coince <Setter Property="Foreground" Value="Red" /> </Trigger> </Style.Triggers> </Style> </TextBlock.Style> </TextBlock> </ControlTemplate> </ToggleButton.Template> </ToggleButton> <!-- PlaceHolder of Selected View --> <ContentControl Content="{Binding CurrentViewModel}" Grid.Row="1" /> <----- conteneur qui reçoie l'écran avec les autres textblock à traiter
Optionnellement, j'aurais aimer aussi que le texte de mon toggle (et uniquement lui) soit en épaisseur normale et en italique lorsque inactif, et en non italique et en gras lorsque actif. Mais ça c'est déjà beaucoup plus accessoire.
Partager