我需要根据ViewModel中的属性显示带有动画的隐藏网格。我可以显示隐藏的视图,但不能对其进行动画处理。
以下代码基于HasMessage
属性有效地显示和隐藏网格,而没有动画。
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasMessage}" Value="True">
<Setter Property="Visibility" Value="Visible" />
</DataTrigger>
<DataTrigger Binding="{Binding HasMessage}" Value="False">
<Setter Property="Visibility" Value="Hidden" />
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
如何基于HasMessage
属性为网格设置动画?
我尝试直接在storyboard
内部使用DataTrigger
,但出现错误。
<Grid.Style>
<Style TargetType="{x:Type Grid}">
<Style.Triggers>
<DataTrigger Binding="{Binding HasMessage}" Value="True">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="(Grid.Height)"
From="0" To="100"
Duration="0:0:2"
AutoReverse="False" />
</Storyboard>
</BeginStoryboard>
</DataTrigger>
<DataTrigger Binding="{Binding HasMessage}" Value="False">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="(Grid.Height)"
From="100" To="0"
Duration="0:0:2"
AutoReverse="False" />
</Storyboard>
</BeginStoryboard>
</DataTrigger>
</Style.Triggers>
</Style>
</Grid.Style>
错误:
类型为
BeginStoryboard
的valute不能添加到类型为SetterBaseCollection
的集合或字典中。