J'ai personnalisé le contrôle ToggleButton à l'aide d'un ControlTemplate comme ceci:Modifier une partie du controltemplate dans les contrôles de style?
<StackPanel>
<StackPanel.Resources>
<Style x:Key="OptionBarButton" TargetType="{x:Type ToggleButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Border Padding="18,12,18,12" Background="{TemplateBinding Background}">
<ContentPresenter />
</Border>
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="DarkBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="True" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="SkyBlue" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="False" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#88000000" />
</MultiTrigger.Setters>
</MultiTrigger>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsChecked" Value="False" />
<Condition Property="IsMouseOver" Value="True" />
</MultiTrigger.Conditions>
<MultiTrigger.Setters>
<Setter Property="Background" Value="#F0000000" />
</MultiTrigger.Setters>
</MultiTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</StackPanel.Resources>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
<ToggleButton Style="{StaticResource OptionBarButton}">
<Image Source="../Assets/icons/action2.png" Height="26" RenderOptions.BitmapScalingMode="Fant" />
</ToggleButton>
</StackPanel>
Cela fonctionne bien, mais je voudrais maintenant changer certaines parties du modèle dans certaines des commandes de style, à savoir les états de couleur IsChecked (SkyBlue/DarkBlue).
Est-il possible de modifier/transmettre ces couleurs dans/au modèle lors de son utilisation? Je sais que je peux utiliser les propriétés attachées ou/et sous-classer la classe ToggleButton (en y ajoutant des propriétés de dépendance), mais je me demandais s'il n'y avait pas de façon plus idiomatique de résoudre cela, peut-être seulement avec xaml. Avoir à écrire du code personnalisé en C# semble un peu exagéré pour un cas d'utilisation si simple?
Ah, c'est génial. Je peux certainement voir cela utile dans d'autres scénarios. Merci! – monoceres