首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WPF(.Net Core)同时触发网格/堆栈面板的多个EventTrigger (来自子EventTrigger)

WPF(.Net Core)同时触发网格/堆栈面板的多个EventTrigger (来自子EventTrigger)
EN

Stack Overflow用户
提问于 2020-07-30 23:33:43
回答 1查看 235关注 0票数 0

我有一个WPF应用程序,它有一个网格。在网格中有一个StackPanel,它有一个图像和一个TextBlock元素。当我使用网格/StackPanel的事件处理程序"MouseOver“时,我希望同时增加图片(ThicknessAnimationUsingKeyFrames)和FontSize of TextBlock (DoubleAimation)的大小(StackPanel中的所有内容)。

问题是,我无法使用网格的事件处理程序从网格的子级运行EventTrigger (图像和TextBlock )。

我还试图创建一个自定义的RoutedEvent,但是由于隧道事件和冒泡事件无法到达子节点(没有广播),所以不可能。

一整天都在寻找类似的问题和解决方案。但没有成功。有人能帮我吗?该怎么办呢。一定有解决办法。

这是我的网格:

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-02 11:43:11

您的StackPanel需要设置背景。

将动画移至其下,并将其目标添加到每个动画中:

代码语言:javascript
复制
<DoubleAnimation Storyboard.TargetName="textBlock_Settings" ....>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63182855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档