我有一個邊框的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'標籤 - '<觸發屬性=「IsMouseOver」 VALUE =「真」>' –