WPF Border OnMouseDown的背景更改 [英] WPF Background change of Border OnMouseDown
本文介绍了WPF Border OnMouseDown的背景更改的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试更改鼠标左键边框的背景.按钮,我不明白.当然,我的渐变有3个停靠点.
I'm trying to change the background of a border on left mousebutton down. Button I don't get it. Of Course my gradient has 3 stops.
事件触发:
<EventTrigger RoutedEvent="UIElement.PreviewMouseLeftButtonDown" SourceName="border">
<BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/>
</EventTrigger>
StoryBoard:
<Storyboard x:Key="OnMouseDown">
<ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[0].Color" To="Red" />
<ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[1].Color" To="Red" />
<ColorAnimation Duration="0:0:0.15" Storyboard.TargetName="border" Storyboard.TargetProperty="Background.GradientStops[2].Color" To="Red" />
</Storyboard>
如果有人看到错误,请告诉我;)
If anybody sees the mistake please tell me ;)
推荐答案
我看不到任何明显的错误,并且使用您发布的代码创建的示例项目也可以正常工作.也许您可以用它来找到问题的根源
I don't see any obvious errors and the sample project I created using the code you posted works just fine. Maybe you can use it to find the source of your problem
<Window.Resources>
<Storyboard x:Key="OnMouseDown">
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[0].Color"
To="Red" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
To="Red" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[2].Color"
To="Red" />
</Storyboard>
</Window.Resources>
<Grid>
<Border Name="border">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Blue" Offset="1.0"/>
</LinearGradientBrush>
</Border.Background>
<Border.Triggers>
<EventTrigger RoutedEvent="PreviewMouseLeftButtonDown"
SourceName="border">
<BeginStoryboard x:Name="MouseDown_BeginStoryboard"
Storyboard="{StaticResource OnMouseDown}"/>
</EventTrigger>
</Border.Triggers>
</Border>
</Grid>
更新
我也尝试添加一个MouseLeave事件,并且该事件仍然有效.
I tried to add a MouseLeave event as well and it's still working.
更新2
添加了MouseEnter
Added MouseEnter
<Window.Resources>
<Storyboard x:Key="OnMouseDown">
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[0].Color"
To="Red" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
To="Red" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[2].Color"
To="Red" />
</Storyboard>
<Storyboard x:Key="OnMouseLeave">
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[0].Color"
To="Blue" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
To="Blue" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[2].Color"
To="Blue" />
</Storyboard>
<Storyboard x:Key="OnMouseEnter">
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[0].Color"
To="Green" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[1].Color"
To="Green" />
<ColorAnimation Duration="0:0:0.15"
Storyboard.TargetName="border"
Storyboard.TargetProperty="Background.GradientStops[2].Color"
To="Green" />
</Storyboard>
</Window.Resources>
<Grid>
<Border Name="border">
<Border.Background>
<LinearGradientBrush>
<GradientStop Color="Red" Offset="0"/>
<GradientStop Color="Green" Offset="0.5"/>
<GradientStop Color="Blue" Offset="1.0"/>
</LinearGradientBrush>
</Border.Background>
<Border.Triggers>
<EventTrigger RoutedEvent="PreviewMouseLeftButtonDown" SourceName="border">
<BeginStoryboard x:Name="MouseDown_BeginStoryboard" Storyboard="{StaticResource OnMouseDown}"/>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave" SourceName="border">
<BeginStoryboard x:Name="MouseLeave_BeginStoryboard" Storyboard="{StaticResource OnMouseLeave}"/>
</EventTrigger>
<EventTrigger RoutedEvent="MouseEnter" SourceName="border">
<BeginStoryboard x:Name="MouseEnter_BeginStoryboard" Storyboard="{StaticResource OnMouseEnter}"/>
</EventTrigger>
</Border.Triggers>
</Border>
</Grid>
这篇关于WPF Border OnMouseDown的背景更改的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文