【发布时间】:2018-04-16 10:27:54
【问题描述】:
在我看来,我有一个 Grid,它的“可见性”取决于集合是否包含多个元素。随着元素的添加和删除,该网格需要动画展开和折叠。我写了一个 DataTrigger 来做这件事,效果很好。
<DataTrigger Binding="{Binding Path=MyCollection.Count, Converter={StaticResource IsLessThanConverter}, ConverterParameter=2}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard TargetName="MyCollapsingGrid" TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)">
<DoubleAnimation Duration="00:00:0.2"
EasingFunction="{StaticResource ExpoEaseInOut}"
To="0" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard TargetName="MyCollapsingGrid" TargetProperty="(FrameworkElement.LayoutTransform).(ScaleTransform.ScaleY)">
<DoubleAnimation Duration="00:00:0.2"
EasingFunction="{StaticResource ExpoEaseInOut}"
To="1" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
我正在将我的 Grid 的 LayoutTransform 初始化为默认的 ScaleTransform
<Grid x:Name="MyCollapsingGrid">
<Grid.LayoutTransform>
<ScaleTransform />
</Grid.LayoutTransform>
</Grid>
当我的视图使用包含两个元素的集合进行初始化并且我删除一个元素时,Grid 动画正确折叠。但是,当我使用一个包含一个元素的集合初始化视图时,它会在播放折叠动画时短暂显示 Grid。由于我已经在使用触发器来执行此动画,当我的集合只有一个元素时,如何将 Grid 的 LayoutTransform 初始化为 0,这样我就看不到折叠动画?
【问题讨论】:
标签: wpf animation datatrigger