【发布时间】:2021-08-07 10:20:59
【问题描述】:
我有一个要在ItemsControl 中显示的项目集合。
当一个项目是新的时,它应该淡入,当它的StateType 属性更改为“Finished”时它应该淡出。
我的ItemsControl 的ItemTemplate 是DockPanel
<DockPanel.Style>
<Style TargetType="{x:Type DockPanel}">
<Style.Triggers>
<!-- Fades in as expected but DataTrigger below never fades out -->
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<!-- Using this for fading in everything works fine (first StateType of a new item is Running) -->
<!--
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem+Type.Running}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
-->
<!-- fade out trigger -->
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem+Type.Finished}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="1" To="0" BeginTime="0:0:4"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
问题是:它淡入但从不淡出。如果我用注释过的DataTrigger 替换EventTrigger 以使其淡入淡出,它会按预期工作。 EventTrigger 是否会覆盖某些东西,即使它应该只触发一次?
【问题讨论】:
标签: c# wpf storyboard datatrigger eventtrigger