我有一个WPF应用程序,它有一个网格。在网格中有一个StackPanel,它有一个图像和一个TextBlock元素。当我使用网格/StackPanel的事件处理程序"MouseOver“时,我希望同时增加图片(ThicknessAnimationUsingKeyFrames)和FontSize of TextBlock (DoubleAimation)的大小(StackPanel中的所有内容)。
问题是,我无法使用网格的事件处理程序从网格的子级运行EventTrigger (图像和TextBlock )。
我还试图创建一个自定义的RoutedEvent,但是由于隧道事件和冒泡事件无法到达子节点(没有广播),所以不可能。
一整天都在寻找类似的问题和解决方案。但没有成功。有人能帮我吗?该怎么办呢。一定有解决办法。
这是我的网格:
<Grid Name="grid_Settings" Grid.Row="0" Grid.Column="5" MouserEnter="Grid_Settings_MouseEnter>
<StackPanel>
<Image Name="image_Settings" Margin="45,10,45,0" RenderTransformOrigion = "0.5, 0.5">
<Image.Triggers>
<EventTrigger RoutedEvent="**MouseEnter**">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimationUsingKeyFrames Storyboard.TargetProptery="Margin" BeginTime ="0:0:0">
<SplineThicknessKeyFrame KeyTime="0:0:0" Value="45,10,45,0"></SplineThicknessKeyFrame>
<SplineThicknessKeyFrame KeyTime="0:0:0.2" Value="35,10,35,0"></SplineThicknessKeyFrame>
</ThicknessAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<ThicknessAnimationUsingKeyFrames Storyboard.TargetProptery="Margin" BeginTime ="0:0:0">
<SplineThicknessKeyFrame KeyTime="0:0:0" Value="35,10,35,0"></SplineThicknessKeyFrame>
<SplineThicknessKeyFrame KeyTime="0:0:0.2" Value="45,10,45,0"></SplineThicknessKeyFrame>
</ThicknessAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
<TextBlock Name="textBlock_Settings" FontSize="15" Margin="15" Text="Options">
<TextBlock.Triggers>
<EventTrigger RoutedEvent="MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duraiton="0:0:.5" Storyboard.TargetProperty="FontSize" To="20"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duraiton="0:0:.5" Storyboard.TargetProperty="FontSize" To="20"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</TextBlock.Triggers>
</TextBlock>
</StackPanel>
</Grid>应该使用来自网格/StackPanel的EventTrigger MouserEnter="Grid_Settings_MouseEnter"来触发EventTriggers,而不是每个EventTrigger都有一个RoutedEvent="MouseOver/Leave“。
非常感谢您可能给出的答案,如果我无法理解地表达了自己,请原谅。为时已晚:D
发布于 2020-08-02 11:43:11
您的StackPanel需要设置背景。
将动画移至其下,并将其目标添加到每个动画中:
<DoubleAnimation Storyboard.TargetName="textBlock_Settings" ....>https://stackoverflow.com/questions/63182855
复制相似问题