У меня есть стиль WPF, который является границей. Он используется для кнопки.Как правильно настроить WPF EventTrigger в стиле?
<Style x:Key="RoundCorner" TargetType="{x:Type Button}">
<Setter Property="ClickMode" Value="Press"/>
<EventSetter Event="PreviewMouseUp" Handler="RegularButtonRelease"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Grid x:Name="grid">
<Border x:Name="border" CornerRadius="2" BorderBrush="#FF444444" BorderThickness="1">
<Border.Background>
<LinearGradientBrush StartPoint="0.5,0" EndPoint="0.5,1.2" >
<GradientStop Color="#ffaaaaaa" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
<ControlTemplate.Triggers>
<Trigger Property="IsPressed" Value="True">
<!--some style -->
</Trigger>
<Trigger Property="IsMouseOver" Value="True">
<!--some style -->
</Trigger>
<EventTrigger RoutedEvent="PreviewMouseLeftButtonUp">
<BeginStoryboard>
<Storyboard Duration="0:0:2" AutoReverse="False">
<ColorAnimation
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
FillBehavior="Stop" To="Tomato"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Я хочу установить цвет фона рамки для другого в течение заданного времени, когда я отпущу кнопку мыши на кнопке. (например, при нажатии на кнопку черный, и когда я отпускаю ее, она меняется на красный), а затем меняет цвет на белый).
Используя приведенный выше код, я вижу, что цвет кнопки меняется после отпускания кнопки мыши, и мой обработчик события RegularButtonRelease
также запускается непрерывно. Скоро аппликация висит, и дает мне исключение System.StackOverflowException
.
Если я убираю EventTrigger
в стиле, мои приложения выполняются правильно, поэтому мой EventTrigger должен быть ошибочным.
Вопрос: как я мог правильно установить изменение цвета фона при помощи кнопки мыши (используя EventTrigger или что-то еще)?
UPDATE:
Я пытаюсь установить границу и фон, в то же время с помощью:
<ColorAnimation
Duration="0:0:0.8"
Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.BorderBrush).(SolidColorBrush.Color)"
To="Red"/>
<ColorAnimation
Duration="0:0:0.8"
Storyboard.TargetName="border"
Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)"
To="Red"/>
На этот раз граница меняется на красный, работает как шарм. Но фон все еще сидит там, никаких изменений.
Как правильно изменить фон?
Добавьте эту строку в файл 'Triggers' тегу -' ' –