Wpf 在动画上切换按钮
我想在ToggleButton被选中=false并且IsMouseOver被禁用时添加淡出动画 我有一个带有自定义控件模板的切换按钮 以下触发器已设置,工作正常Wpf 在动画上切换按钮,wpf,wpf-controls,wpf-animation,Wpf,Wpf Controls,Wpf Animation,我想在ToggleButton被选中=false并且IsMouseOver被禁用时添加淡出动画 我有一个带有自定义控件模板的切换按钮 以下触发器已设置,工作正常 当IsChecked=true时,显示背景不透明度=1 当IsMouseOver=true时,显示背景不透明度=1 <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"&g
- 当IsChecked=true时,显示背景不透明度=1
- 当IsMouseOver=true时,显示背景不透明度=1
<ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter Property="Opacity" TargetName="innerRectangle" Value="1"/> </Trigger> <Trigger Property="IsChecked" Value="True"> <Setter Property="Opacity" TargetName="innerRectangle" Value="1"/> </Trigger> </ControlTemplate.Triggers>
<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>
我试过的
我在IsMouseOver触发器中添加了一个entreaction和ExitAction,它执行预期的效果。但是,如果选中了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.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>
这看起来很疯狂,但它确实有效。基本上,当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>
这看起来很疯狂,但它确实有效。基本上,当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>
您是否尝试过在ExitActions中使用?我用它来在不满足条件时回滚不透明度中的淡入淡出。你在ExitActions中用过吗?我已经用它来在不满足条件时回滚不透明度中的淡入淡出。