如何为绑定到viewmodel属性的WPF控件设置动画?

Avr*_*oel 2 wpf animation xaml mvvm viewmodel

我有一个使用MVVM的WPF应用程序。用户编辑数据时,如果满足某些条件,他们将需要填写修订说明以进行审核。如果他们不需要,我会隐藏修订说明文本框以保持UI清晰。

目前,这是通过将包围文本框(及其标签)的Grid的Visibility属性绑定到viewmodel的bool属性来完成的。当布尔值更改时,版本注释文本框将被隐藏或根据需要显示。

这可以正常工作,但仅显示文本框。我想对其进行动画处理,使其从零高度增加到默认高度或类似的高度。

知道我该怎么做吗?我以前做过动画,但这总是在我手动触发动画时进行。在这种情况下,我想在XAML中声明动画,因此绑定更改时它会自动发生。

有人能指出我正确的方向吗?

Gaz*_*yer 5

只需使用DataTrigger即可启动动画:

 <Grid>
    <Grid.Style>
       <Style>
           <Style.Triggers>
               <DataTrigger Binding="{Binding MyVMBool}"
                         Value="True">

                    <DataTrigger.EnterActions>
                        <BeginStoryboard >
                            <Storyboard>
                                <!-- DoubleAnimation on height or whatever -->
                            </Storyboard>
                        </BeginStoryboard>
                    </DataTrigger.EnterActions>

                    <DataTrigger.ExitActions>
                        <!-- you could animate close too if you wanted -->
                    </DataTrigger.ExitActions>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </Grid.Style>
Run Code Online (Sandbox Code Playgroud)