我想使用样式来制作WPF控件(在这种情况下是来自Telerik的第三方控件,但可以是任何东西)淡出,因为它的Visibility属性更改为Hidden。我尝试使用的这种方法在将设置为Visibility.Visible之后,可以很好地淡化 in 内容。但这不是相反的方式:
<Style x:Key="FadeoutStyle" TargetType="telerik:RadDiagramShape">
<Style.Triggers>
<Trigger Property="Visibility" Value="Hidden">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity"
From="1.0" To="0.0" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
</Trigger>
</Style.Triggers>
</Style>
我非常清楚为什么这不起作用:只要控件设置为Hidden,WPF就会停止绘制它。所以我的动画甚至可能正在播放,但它没有显示,因为Visibility.Hidden立即被应用。
问题1:我的假设是否正确?问题2:解决这个问题的好方法是什么?我可以设想一个解决方案,其中自定义属性启动淡出动画,并在完成应用实际Visibility.Hidden设置后使用回调。有更清洁的解决方案吗?
答案 0 :(得分:0)
Visibility.Hidden问题不谈,最终我发现我错误地使用了触发器。我的工作版本(使用不同的属性)如下所示:
<Trigger Property="IsEnabled" Value="False">
<Trigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</Trigger.EnterActions>
<Trigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.2"/>
</Storyboard>
</BeginStoryboard>
</Trigger.ExitActions>
</Trigger>