XAML Storyboard动画基于另一个元素的EventTrigger

时间:2018-03-23 11:40:34

标签: wpf xaml animation storyboard

我想通过与另一个元素的交互在一个元素上触发动画。 我有以下代码:

(b2 -> c2) -> (a1 -> a2 -> b2) -> a1 -> a2 -> c2

每次触发EventTrigger时,应用程序都会进入中断模式。为什么呢?

1 个答案:

答案 0 :(得分:0)

你的问题是你的itemscontrol中的每个项目都有它自己的名称范围。找不到grid1,因为它不在该名称范围内。这是必要的,否则你将无法在这样的模板中按名称引用事物。

此代码有效,因为只有一个itemscontrol,它与grid1在同一个名称范围内:

<StackPanel>
    <Grid Name="grid1" Height="100"/>
    <ItemsControl  ItemsSource="{Binding Items}"

             >
        <ItemsControl.Triggers>
            <EventTrigger RoutedEvent="Grid.MouseDown">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetName="grid1"
                            Storyboard.TargetProperty="Height"
                            From="100"
                            To="60"
                            Duration="0:0:5">
                        </DoubleAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </ItemsControl.Triggers>
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Grid>
                    <TextBlock Text="{Binding}"/>
                </Grid>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>
</StackPanel>