Je voudrais utiliser ToggleButton de manière suivante: Il y a 5 images différentes et chacune d'entre elles doivent être affichées en fonction de l'état actuel:changement d'image ToggleButton selon l'état
bouton- désactivé bouton
- activé , le bouton décoché
- activé, le bouton décochée, pointé par la souris curseur
- activé, contrôlé bouton
- activé, vérifié, pointé par la souris curseur
J'ai trouvé un exemple simple avec deux images here, mais comment changer l'image en fonction de la propriété "checked"?
La deuxième question: comment puis-je éviter de créer des styles différents pour chaque bouton de mon application? J'utilise environ 20 boutons différents et chacun d'eux a un ensemble d'icônes différent.
Jusqu'à présent, j'utilise une seule icône, en dessous de mon code. Est-il possible d'avoir un code commun (style et modèle) et de définir la source d'images dans la section où je veux créer un bouton (comme dans la section 3 de mon code)?
<ControlTemplate x:Key="ToggleButtonTemplate" TargetType="{x:Type ToggleButton}">
<Grid>
<Border x:Name="ContentBorder" CornerRadius="4" BorderBrush="Transparent" BorderThickness="1" Background="{DynamicResource ButtonOff}">
<ContentPresenter SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" RecognizesAccessKey="True"/>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="true">
<Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonOn}"/>
</Trigger>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonOn}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="ContentBorder" Property="Background" Value="{DynamicResource ButtonDisabled}"/>
<Setter Property="Foreground" Value="{DynamicResource BorderDisabled}"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
<Style x:Key="ToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="Width" Value="64" />
<Setter Property="Height" Value="64" />
<Setter Property="HorizontalContentAlignment" Value="Center"/>
<Setter Property="VerticalContentAlignment" Value="Center"/>
<Setter Property="Template" Value="{DynamicResource ToggleButtonTemplate}" />
</Style>
<ToggleButton IsChecked="{Binding Path=IsLectorModeEnabled}" Command="{Binding CmdLector}" Style="{DynamicResource ToggleButtonStyle}">
<Image Source="{DynamicResource LectorImage}" HorizontalAlignment="Center" VerticalAlignment="Center" Stretch="None" />
</ToggleButton>
Cela a très bien fonctionné pour moi (et j'ai appris une chose ou deux!). Bon travail! – Flea