Eventtriggers XAML WPF动画

时间:2016-12-07 22:23:04

标签: c# wpf xaml animation eventtrigger

我有这样的疑问。 我想通过单击按钮调整窗口大小并更改某些网格的边距,然后通过使用eventtriggers和XAML单击另一个按钮来设置后面的动画。 这些按钮位于窗口中,但不在该网格中。

我需要使用storyboard.target或storyboard.targetname来完成此操作。 例如,我有这段代码:

<Window blabla
        x:Name="window">

    <Grid>
        <Button>
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Click">
                            <BeginStoryBoard>
                                <StoryBoard>
                                    <DoubleAnimation From="300"
                                                     To="500"
                                                     Duration="0:0:1"
                                                     StoryBoard.Target="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"
                                                     StoryBoard.TargetProperty="Height"/>
                                    <ThicknessAnimation From="0"
                                                        To="20"
                                                        Duration="0:0:1"
                                                        StoryBoard.TargetName="grid"
                                                        StoryBoard.TargetProperty="Margin"/>
                                </StoryBoard>
                            </BeginStoryBoard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
        <Button>
            <Button.Style>
                <Style TargetType="{x:Type Button}">
                    <Style.Triggers>
                        <EventTrigger RoutedEvent="Click">
                            <BeginStoryBoard>
                                <StoryBoard>
                                    <DoubleAnimation From="500"
                                                 To="300"
                                                 Duration="0:0:1"
                                                 StoryBoard.Target="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Window}}}"
                                                 StoryBoard.TargetProperty="Height"/>
                                    <ThicknessAnimation From="20"
                                                    To="0"
                                                    Duration="0:0:1"
                                                    StoryBoard.TargetName="grid"
                                                    StoryBoard.TargetProperty="Margin"/>
                                </StoryBoard>
                            </BeginStoryBoard>
                        </EventTrigger>
                    </Style.Triggers>
                </Style>
            </Button.Style>
        </Button>
    </Grid>
    <Grid x:Name="grid"/>
</Window>

但是这段代码不起作用。

所以,我已经在这个论坛上搜索过,但我找不到任何有用的解决方案。

你能告诉我一些代码如何实现这个目标吗?

0 个答案:

没有答案