解决此问题很简单

将Storyboard单独提取出来及可

给定Key名称,然后在触发器中的BeginStoryboard的storyboard绑定即可

  1. <!--单独提取并设置Xkey-->
  2. <Storyboard x:Key="SB" Completed="Storyboard_Completed">
  3. <DoubleAnimation Storyboard.TargetName="rec1" Storyboard.TargetProperty="Width" To="" Duration="0:0:2"/>
  4. <DoubleAnimation Storyboard.TargetName="rec1" Storyboard.TargetProperty="Height" To="" Duration="0:0:2"/>
  5. </Storyboard>
  6.  
  7. <Style x:Key="FocusVisual">
  8. <Setter Property="Control.Template">
  9. <Setter.Value>
  10. <ControlTemplate>
  11. <Rectangle Margin="" SnapsToDevicePixels="true" Stroke="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}" StrokeThickness="" StrokeDashArray="1 2"/>
  12. </ControlTemplate>
  13. </Setter.Value>
  14. </Setter>
  15. </Style>
  16. <SolidColorBrush x:Key="Button.Static.Background" Color="#FFDDDDDD"/>
  17. <SolidColorBrush x:Key="Button.Static.Border" Color="#FF707070"/>
  18. <SolidColorBrush x:Key="Button.MouseOver.Background" Color="#FFBEE6FD"/>
  19. <SolidColorBrush x:Key="Button.MouseOver.Border" Color="#FF3C7FB1"/>
  20. <SolidColorBrush x:Key="Button.Pressed.Background" Color="#FFC4E5F6"/>
  21. <SolidColorBrush x:Key="Button.Pressed.Border" Color="#FF2C628B"/>
  22. <SolidColorBrush x:Key="Button.Disabled.Background" Color="#FFF4F4F4"/>
  23. <SolidColorBrush x:Key="Button.Disabled.Border" Color="#FFADB2B5"/>
  24. <SolidColorBrush x:Key="Button.Disabled.Foreground" Color="#FF838383"/>
  25. <Style x:Key="ToggleButtonStyle1" TargetType="{x:Type ToggleButton}">
  26. <Setter Property="FocusVisualStyle" Value="{StaticResource FocusVisual}"/>
  27. <Setter Property="Background" Value="{StaticResource Button.Static.Background}"/>
  28. <Setter Property="BorderBrush" Value="{StaticResource Button.Static.Border}"/>
  29. <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlTextBrushKey}}"/>
  30. <Setter Property="BorderThickness" Value=""/>
  31. <Setter Property="HorizontalContentAlignment" Value="Center"/>
  32. <Setter Property="VerticalContentAlignment" Value="Center"/>
  33. <Setter Property="Padding" Value=""/>
  34. <Setter Property="Template">
  35. <Setter.Value>
  36. <ControlTemplate TargetType="{x:Type ToggleButton}">
  37. <Grid>
  38. <Border x:Name="border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" SnapsToDevicePixels="true">
  39. <ContentPresenter x:Name="contentPresenter" Focusable="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Margin="{TemplateBinding Padding}" RecognizesAccessKey="True" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
  40. </Border>
  41. <Rectangle x:Name="rec1" Width="" Height="" Fill="Yellow"/>
  42. </Grid>
  43. <ControlTemplate.Triggers>
  44. <Trigger Property="Button.IsDefaulted" Value="true">
  45. <Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource {x:Static SystemColors.HighlightBrushKey}}"/>
  46. </Trigger>
  47. <Trigger Property="IsMouseOver" Value="true">
  48. <Setter Property="Background" TargetName="border" Value="{StaticResource Button.MouseOver.Background}"/>
  49. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.MouseOver.Border}"/>
  50. </Trigger>
  51. <Trigger Property="IsPressed" Value="true">
  52. <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Pressed.Background}"/>
  53. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Pressed.Border}"/>
  54. </Trigger>
  55. <Trigger Property="IsEnabled" Value="false">
  56. <Setter Property="Background" TargetName="border" Value="{StaticResource Button.Disabled.Background}"/>
  57. <Setter Property="BorderBrush" TargetName="border" Value="{StaticResource Button.Disabled.Border}"/>
  58. <Setter Property="TextElement.Foreground" TargetName="contentPresenter" Value="{StaticResource Button.Disabled.Foreground}"/>
  59. </Trigger>
  60. <EventTrigger RoutedEvent="ToggleButton.Checked" >
  61. <!--绑定即可-->
  62. <BeginStoryboard Storyboard="{StaticResource SB}"/>
  63. </EventTrigger>
  64. </ControlTemplate.Triggers>
  65. </ControlTemplate>
  66. </Setter.Value>
  67. </Setter>
  68. </Style>

WPF ControlTemplate 动画板 结束事件不触发的更多相关文章

  1. WPF InkCanvas MouseDown及MouseLeftButtonDown事件不触发的代替事件

    PreviewMouseDown事件可以触发  再通过e.LeftButton 的状态判断是否按钮被按下 特此备忘

  2. WPF数据模板中绑定事件不触发问题

    今天比较闲,做一个练手的项目,结果在xaml中写了一个用户的数据模板后,在其中的某个Canvas上绑定了一个鼠标左击的事件,结果调试的时候,无论怎么点击都不跳到断点那里,百思不得其解. 之后尝试不绑定 ...

  3. vb.net WPF webbrowser window.close 关闭后不触发 WindowClosing 事件 WNDPROC解决方式

     vb.net WPF webbrowser window.close 关闭后不触发 WindowClosing 事件 WNDPROC解决方式 #Region "WPF 当浏览器窗体关闭 ...

  4. WPF嵌入Unity3D之后,unity3D程序的键盘和鼠标事件无法触发(3D程序的焦点无法激活)的解决方案

    目前最通用的客户端调用3D的方式,就是WPF程序通过Process启动Unity3D的exe进程,直接上代码: //开启3D进程 internal void Create3DProcess(strin ...

  5. wpf自定义控件中使用自定义事件

    wpf自定义控件中使用自定义事件 1 创建自定义控件及自定义事件 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 2 ...

  6. WPF 为资源字典 添加事件响应的后台类

    原文:WPF 为资源字典 添加事件响应的后台类 前言,有许多同学在写WPF程序时在资源字典里加入了其它控件,但又想写事件来控制这个控件,但是资源字典没有CS文件,不像窗体XAML还有一个后台的CS文件 ...

  7. Activiti结束事件(End Event)

    Activiti结束事件(End Event) 作者:Jesai -2017.08.03T01:03 曾经,黑夜多么漫长,八月雨扰眠,缘何? 声明:版权所有,如需引用请注明出处,如发现抄袭,必追究法律 ...

  8. Jenkins 实现Gitlab事件自动触发Jenkins构建及钉钉消息推送

    实现Gitlab事件自动触发Jenkins构建及钉钉消息推送 实践环境 GitLab Community Edition 12.6.4 Jenkins 2.284 Post build task 1. ...

  9. Flowable实战(四)BPMN2.0 启动与结束事件

    一.BPMN2.0   BPMN2.0规范是一个标准,开源框架和不同供应商都遵循这份标准,使得最终用户不会因为依赖专有解决方案,而被供应商"绑架".有了BPMN2.0标准,不同解决 ...

随机推荐

  1. gridview发布后,编辑改为edit 原因是未安装 dotNetFx40LP_Full_x86_x64zh-Hans中文语言包

    https://www.microsoft.com/zh-cn/download/details.aspx?id=3324

  2. 拦截TextBox 双击消息

    Option Explicit Public Declare Function GetWindowLong Lib "user32" Alias "GetWindowLo ...

  3. MyBatis 注解式开发

  4. clr相关名词

    程序集:一个或多个类型定义文件和资源文件的集合 Native Code(本机代码): 已被编译为特定于处理器的机器码的代码. 本地代码(native code)是计算机编程(代码),编译用来运行一个特 ...

  5. Oracle-11g-r2 实例囚笼(Instance Caging)配置

    实例囚笼(Instance Caging)应用场合: 在单台多 CPU 的服务器上,经常出现同时运行多个数据库实例的情况,此方式有利于提高硬件的使用率. 但是多个数据库实例运行,将会互相争用服务器资源 ...

  6. go_组合接口

    main函数入口 package main import ( "fmt" "learngo/retriever/mock" "learngo/retr ...

  7. Android提交自己的作品到GitHub上

    最近在做一个期待上架的我个人写的App,我打算将它开源出去,托管到GitHub上.看了一下网上的教程,其实五花八门,我照着做了,还是没法提交到GitHub上.自己研究了一下,其实非常的简单.这里决定介 ...

  8. 1014_C语言的文法

    程序-> <外部声明><程序><外部声明> 外部声明-> <函数定义>|<声明> 函数定义-> <函数类型>& ...

  9. Sensitivity, specificity, and reproducibility of RNA-Seq differential expression calls RNA-Seq差异表达调用的灵敏度 特异性 重复性

    Sensitivity, specificity, and reproducibility of RNA-Seq differential expression calls RNA-Seq差异表达调用 ...

  10. Spring JMX之三:通知的处理及监听

    通过查询MBean获得信息只是查看应用状态的一种方法.但当应用发生重要事件时,如果希望 能够及时告知我们,这通常不是最有效的方法. 例如,假设Spittr应用保存了已发布的Spittle数量,而我们希 ...