在WPF / MVVM中基于布尔属性的动画网格

时间:2018-10-26 12:10:41

标签: wpf mvvm storyboard

我需要根据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的集合或字典中。

  

0 个答案:

没有答案