当ToggleButton IsChecked=false和IsMouseOver失活时,我想添加一个淡出动画。
我有一个带有自定义控制模板的切换按钮。
下面的触发器是设置并工作很好的。
但是,现在我想添加一个淡出动画,当ToggleButton是而不是检查和IsMouseOver正在停用时。
我创建了一个故事板动画,它在100 to中将不透明值从1更改为0:
<Storyboard x:Key="OnMouseOut">
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="innerRectangle">
<EasingDoubleKeyFrame KeyTime="0" Value="1"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.1" Value="0"/>
</DoubleAnimationUsingKeyFrames></Storyboard>我试过的
我将EnterAction和ExitAction添加到IsMouseOver触发器中,这将执行有意的效果。但是,如果选中了ToggleButton,我不希望动画运行。
<Trigger Property="IsMouseOver" Value="True">
<Trigger.EnterActions>
<BeginStoryboard x:Name="OnMouseIn_BeginStoryboard" Storyboard="{StaticResource OnMouseIn}"/>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource OnMouseOut}"/>
</Trigger.ExitActions>
<Setter Property="Opacity" TargetName="innerRectangle" Value="1"/>
</Trigger>我试过的第二部分
使用MultiTrigger并不能解决这个问题。
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsChecked" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<BeginStoryboard x:Name="OnMouseIn_BeginStoryboard" Storyboard="{StaticResource OnMouseIn}"/>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard Storyboard="{StaticResource OnMouseOut}"/>
</MultiTrigger.ExitActions>
<Setter Property="Opacity" TargetName="innerRectangle" Value="1"/>
</MultiTrigger>发布于 2015-07-24 18:11:04
这看起来很疯狂,但很管用。基本上,当IsChecked退出时,我创建了一个具有不同名称的相同的故事板。我取消了这个次要的故事板。
<ControlTemplate.Triggers>
<MultiTrigger>
<MultiTrigger.Conditions>
<Condition Property="IsMouseOver" Value="True"/>
<Condition Property="IsChecked" Value="False"/>
</MultiTrigger.Conditions>
<MultiTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="OnMouseOut_BeginStoryboard2"/>
<BeginStoryboard x:Name="OnMouseIn_BeginStoryboard" Storyboard="{StaticResource OnMouseIn}"/>
</MultiTrigger.EnterActions>
<MultiTrigger.ExitActions>
<BeginStoryboard x:Name="OnMouseOut_BeginStoryboard" Storyboard="{StaticResource OnMouseOut}"/>
</MultiTrigger.ExitActions>
<Setter Property="Opacity" TargetName="innerRectangle" Value="1"/>
</MultiTrigger>
<Trigger Property="IsChecked" Value="True">
<Trigger.ExitActions>
<StopStoryboard BeginStoryboardName="OnMouseOut_BeginStoryboard"/>
<StopStoryboard BeginStoryboardName="OnMouseIn_BeginStoryboard"/>
<BeginStoryboard x:Name="OnMouseOut_BeginStoryboard2" Storyboard="{StaticResource OnMouseOut}"/>
</Trigger.ExitActions>
<Trigger.EnterActions>
<StopStoryboard BeginStoryboardName="OnMouseOut_BeginStoryboard"/>
<StopStoryboard BeginStoryboardName="OnMouseIn_BeginStoryboard"/>
</Trigger.EnterActions>
<Setter Property="Opacity" TargetName="innerRectangle" Value="1"/>
</Trigger>
</ControlTemplate.Triggers>https://stackoverflow.com/questions/31611781
复制相似问题