使用DataTrigger设置网格宽度动画时的DoubleAnimation异常

时间:2016-03-28 14:49:23

标签: wpf xaml

我正在尝试在检查切换按钮时设置网格宽度的动画。我在Grid的样式元素中使用了数据触发器来执行此操作,但是,无论何时触发我都会收到错误,说明:

  

无法为a上的'Width'属性设置动画   'System.Windows.Controls.Grid'使用了   'System.Windows.Media.Animation.DoubleAnimation'

我很确定可以按照我尝试的方式为网格设置动画,因为我已经使用点击事件让它工作了。有谁看到我在哪里出错?

<Grid Margin="0" HorizontalAlignment="Left"
          TextOptions.TextFormattingMode="Display" x:Name="MainGrid" >

        <Grid.Resources>
            <Style TargetType="Grid">
                <Style.Setters>
                    <Setter Property="Width" Value="300"/>
                </Style.Setters>
                <Style.Triggers>
                    <DataTrigger Binding="{Binding Path=IsChecked, ElementName=CollapseIcon}" Value="True">

                        <DataTrigger.EnterActions>
                            <BeginStoryboard >
                                <Storyboard >
                                    <DoubleAnimation Duration="0:0:0.200" Storyboard.TargetProperty="Width" To="16" />
                                </Storyboard>
                            </BeginStoryboard>
                        </DataTrigger.EnterActions>
                    </DataTrigger>

                </Style.Triggers>
            </Style>

        </Grid.Resources>

1 个答案:

答案 0 :(得分:2)

我为男人道歉,我完全忘了回到这个星期五,然后今天再次看到你的问题。不管你怎么这么近!将Width的依赖项属性移动到对象,然后完成所有操作!这个测试就好了。干杯!

<Window x:Class="MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow" Height="350" Width="525">
    <Grid>


            <Grid Margin="0" HorizontalAlignment="Left" Width="300" Background="Red"
              TextOptions.TextFormattingMode="Display" x:Name="MainGrid" >

                <Grid.Resources>

                    <Style TargetType="Grid">
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding Path=IsChecked, ElementName=CollapseIcon}" Value="True">

                                <DataTrigger.EnterActions>
                                    <BeginStoryboard >
                                        <Storyboard >
                                            <DoubleAnimation Duration="0:0:0.2" 
                                                             Storyboard.TargetProperty="Width" 
                                                             From="300" To="16" />
                                        </Storyboard>
                                    </BeginStoryboard>
                                </DataTrigger.EnterActions>
                            </DataTrigger>


                        </Style.Triggers>
                    </Style>

                </Grid.Resources>

            </Grid>


            <ToggleButton x:Name="CollapseIcon" Content="Magic!" Height="50" Width="50"/>

        </Grid>
    </Window>

ADDENDUM:在DoubleAnim中忘记你需要明确同时使用ToFROM,否则它只会在From中返回NaN。干杯!