Уважаемые господа.
Пытаюсь написать стиль для кнопки.
Проблема — не знаю как поменять цвет текста в нажатом состоянии из анимации.
<Style x:Key="SimpleToggleButton" TargetType="ToggleButton">
<Setter Property="Foreground" Value="{DynamicResource ControlTextBrush}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Grid x:Name="Root">
<VisualStateManager.VisualStateGroups>
...
<VisualStateGroup x:Name="CheckStates">
<VisualStateGroup.Transitions>
<VisualTransition GeneratedDuration="0:0:0.3" />
</VisualStateGroup.Transitions>
<VisualState x:Name="Unchecked" />
<VisualState x:Name="Checked">
<Storyboard>
<DoubleAnimation Storyboard.TargetName="BorderSelected"
Storyboard.TargetProperty="(FrameworkElement.Opacity)"
To="1" />
<!--
?????
-->
</Storyboard>
</VisualState>
</VisualStateGroup>
...
</VisualStateManager.VisualStateGroups>
...
<Border Name="BorderSelected"
Background="{DynamicResource SelectedBackgroundBrush}"
BorderBrush="{DynamicResource ControlBorderBrush}"
BorderThickness="{TemplateBinding Control.BorderThickness}"
CornerRadius="3,3,3,3"
Opacity="0" />
...
<ContentPresenter x:Name="presenter"
Margin="{TemplateBinding Padding}"
HorizontalAlignment="Center"
VerticalAlignment="Center"
RecognizesAccessKey="True"
SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Получается, конечно, так
<ControlTemplate.Triggers>
<Trigger Property="ToggleButton.IsChecked" Value="True">
<Setter Property="Foreground" Value="#ffffffff" />
</Trigger>
</ControlTemplate.Triggers>
Но эффект не отражается в редакторе.
И хотелось бы из анимации. Пусть даже мгновенно (был черный текст — стал белый).
Я в стилях совсем зеленый, поэтому по возможности простыми словами или примерами.
Спасибо.
Здравствуйте, vasilov, Вы писали:
V>Пытаюсь написать стиль для кнопки.
V>Проблема — не знаю как поменять цвет текста в нажатом состоянии из анимации.
Можно использовать такой вариант:
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(TextElement.Foreground)">
<DiscreteObjectKeyFrame Value="{x:Static Brushes.Black}"/>
</ObjectAnimationUsingKeyFrames>
Но потребуется писать "обратную" анимацию в Unchecked.
По мне проще сделать обычным триггером