me gusta usar ToggleButton en el siguiente manera: Hay 5 imágenes diferentes y cada uno de ellos debería ser exhibidas en función del estado actual:ToggleButton cambio de imagen en función del estado
- tecla bloqueada botón
- habilitado , sin control botón
- habilitado, no se controla, apuntado por el cursor del ratón
- botón activado, comprueba botón
- habilitado, comprobado, señalado por el cursor del ratón
He encontrado un ejemplo simple con dos imágenes here, pero ¿cómo puedo cambiar la imagen dependiendo de la propiedad "marcada"?
La segunda pregunta: ¿cómo puedo evitar crear diferentes estilos para cada botón en mi aplicación? Estoy usando alrededor de 20 botones diferentes y cada uno de ellos tiene un conjunto diferente de iconos.
Hasta ahora estoy usando solo un icono, debajo de mi código. ¿Es posible tener un código común (estilo y plantilla) y definir la fuente de imágenes en la sección donde quiero crear el botón (como en la sección 3 de mi código)?
<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>
Esto funcionó muy bien para mí (¡y aprendí una o dos cosas!). ¡Gran trabajo! – Flea