c# - 如果少于 1 秒,WPF 表单不透明度淡入淡出动画未完成
问题描述
我有一个表单,我希望将其淡化为 70% 的不透明度,除非鼠标悬停在表单上,我的代码只有在我将动画时间设置为 1 秒时才能正常工作。低于此值的动画似乎在恢复到 100% 不透明度之前停止。
<Window.Resources>
<Style TargetType="local:MainWindow">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard
Storyboard.TargetProperty="(Window.Opacity)"
Duration="0:0:0.3">
<DoubleAnimation To="1" />
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard
Storyboard.TargetProperty="(Window.Opacity)"
Duration="0:0:0.3">
<DoubleAnimation To=".70" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
解决方案
Storyboard.TargetProperty
并且Duration
必须在动画上设置,而不是在情节提要上。
如果您在情节提要上设置持续时间,则动画会运行其默认的 1 秒持续时间。
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To="1" Duration="0:0:0.3"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
To=".7" Duration="0:0:0.3" />
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>
推荐阅读
- java - JPQL - 使用过滤器连接查询
- r - R:如何对某个 ID 的前值进行计数/求和?
- angular - Angular 6:在新的类构造函数中提供 func
- jenkins - 在 Jenkins 中安排工作需要帮助
- javascript - 使用 webpack-dev-server 进行自动测试
- php - 在 Woocommerce 中获取客户“保留”订单状态总金额
- ssh - Jmeter - 连接 SSH - 转换 wget 和 keytool
- javascript - 如何在反应中从本地存储中设置状态?
- php - PHP获取地图位置当前街道地址不出现
- css - shinywidget dropdownButton CSS 标签