我想通过与另一个元素的交互在一个元素上触发动画。 我有以下代码:
(b2 -> c2) -> (a1 -> a2 -> b2) -> a1 -> a2 -> c2
每次触发EventTrigger时,应用程序都会进入中断模式。为什么呢?
答案 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>