Vorrei utilizzare ToggleButton nel seguente modo: Ci sono 5 immagini diverse e ciascuno di essi deve essere visualizzato a seconda dello stato attuale:ToggleButton cambiare immagine a seconda dello stato
- pulsante disattivato pulsante
- abilitato , incontrollato pulsante
- attivata, non controllato, indicate dal cursore
- pulsante attivato, controllato pulsante
- attivata, controllato, puntato dal cursore del mouse
Ho trovato un semplice esempio con due immagini here, ma come modificare l'immagine in base alla proprietà "checked"?
La seconda domanda: come evitare di creare stili diversi per ciascun pulsante nella mia applicazione? Sto usando circa 20 pulsanti diversi e ognuno di essi ha un diverso set di icone.
Finora sto utilizzando solo un'icona, sotto il mio codice. È possibile avere codice comune (stile e modello) e definire la fonte delle immagini nella sezione in cui voglio creare il pulsante (come nella sezione 3 del mio codice)?
<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>
Questo ha funzionato bene per me (e ho imparato una cosa o due!). Ottimo lavoro! – Flea