Я хотел бы использовать ToggleButton в следующим образом: Есть 5 различных изображений, и каждый из них должен быть отображен в зависимости от текущего состояния:ToggleButton изменения изображения в зависимости от состояния
- кнопка отключена кнопка
- включена , бесконтрольно кнопка
- включена, бесконтрольно, указываемый курсор мыши
- кнопки включены, проверяется
- кнопка включена, проверяется, указываемый курсором мыши
Я нашел простой пример с двумя изображениями here, но как изменить изображение в зависимости от свойства «checked»?
Второй вопрос: как я могу избежать создания разных стилей для каждой кнопки в моем приложении? Я использую около 20 различных кнопок, и каждый из них имеет разные значки.
До сих пор я использую только один значок, расположенный ниже моего кода. Возможно ли иметь общий код (стиль и шаблон) и определить источник изображений в разделе, где я хочу создать кнопку (как в разделе 3 моего кода)?
<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>
Это работало отлично для меня (и я узнал кое-что!). Отличная работа! – Flea