WPF动画Completed事件里如何获取执行该动画的UI对象

昨天群里有位童鞋提出如何在动画完成事件Completed里获取到执行该动画的UI对象。

WPF里动画的Completed的本身并不会返回执行动画的UI对象,但我们可以利用附加属性Storyboard.TargetProperty来达到我们想要的效果。

本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/net/

步骤:

1 在执行动画前,先附加属性记录对象

DoubleAnimation ani = new DoubleAnimation();
ani.From = start;
ani.To = end;
ani.Duration = new Duration(TimeSpan.FromSeconds(0.25));
ani.Completed += ani_Completed;  

/* !!! 附加属性Storyboard.Target,用于指定执行动画的UI对象 !!! */
Storyboard.SetTarget(ani, uiElement);  

 /* 启动动画 */
uiElement.BeginAnimation(Canvas.LeftProperty, ani);

2 在动画的Completed事件方法里取回

if (sender is AnimationClock)
{
  AnimationTimeline timeline = (sender as AnimationClock).Timeline;
   /* !!! 通过附加属性把UI对象取回 !!! */
   object uiElement = Storyboard.GetTarget(timeline);
}

附带一个 Demo

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索对象
, storyboard
, 动画
, 属性
, ANI
, 附加
ui事件
wpf ui 框架、wpf 开源ui框架、modern ui for wpf、wpf ui、wpf 多线程更新ui,以便于您获取更多的相关知识。

时间: 2024-12-29 16:58:57

WPF动画Completed事件里如何获取执行该动画的UI对象的相关文章

[WPF] 动画Completed事件里获取执行该动画的UI对象

原文:[WPF] 动画Completed事件里获取执行该动画的UI对象 昨天群里有位童鞋提出如何在动画完成事件Completed里获取到执行该动画的UI对象. WPF里动画的Completed的本身并不会返回执行动画的UI对象,但我们可以利用附加属性Storyboard.TargetProperty来达到我们想要的效果. 步骤: 1 在执行动画前,先附加属性记录对象 DoubleAnimation ani = new DoubleAnimation(); ani.From = start; an

按钮在执行frame动画的时候怎么响应触发事件?

按钮在执行frame动画的时候怎么响应触发事件? 代码中效果(请注意,我并没有点击到按钮,而是点击到按钮的终点frame值处): 对应的代码: // // ViewController.m // TapButton // // Created by YouXianMing on 14/12/7. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import "ViewController.h" @interfac

javascript-onclick事件里套click方法的执行次数

问题描述 onclick事件里套click方法的执行次数 今天看到一段点击可以来回切换内容的代码: 是onclick事件里面套click(),然后用off()移除click: 代码如下: 然后就想知道它的执行顺序是怎么样的就写了一个如下的方法: 放在button的onclick事件里,第一次点击输出11:第二次输出11. aaaaX2:第三次输出11.aaaaX3:为什么里面的click被重复执行了? 解决方案 下面click那个不是执行代码,而是把你个匿名函数(输出aaaa)附加到click事

aspnet-gridview的rowcommand事件里获取控件和分页的问题

问题描述 gridview的rowcommand事件里获取控件和分页的问题 GridViewRow theRow = ((Control)e.CommandSource).BindingContainer as GridViewRow; LinkButton link = (LinkButton)theRow.Cells[6].FindControl("LinkbtnUpdate"); 这是在gridview里获取控件的,然后我点击下一页,就会提示 指定的参数已超出有效值的范围. 参数

html5-canvas怎么设置鼠标事件?怎么获取里面的点?

问题描述 canvas怎么设置鼠标事件?怎么获取里面的点? function() { var graph = document.getElementById('canvas'); if (graph.getContext){ var g = graph.getContext('2d'); g.strokeStyle = '#000'; g.beginPath(); for (var i = 0, l = a.length; i < l; i++) { g.arc((i + 1) * 100,a[

WPF界面设计技巧(3)—实现不规则动画按钮

原文:WPF界面设计技巧(3)-实现不规则动画按钮    发布了定义WPF按钮的教程后,有朋友问能否实现不规则形状的按钮,今天我们就来讲一下不规则按钮的制作.   不规则按钮的做法实际上和先前我们做不规则窗体的方法差不多,只是为按钮弄个不是那么方方正正的背景而已.   我们这次沿用自定义窗体时的设计图形,设计一个动态的不规则按钮,在这个示例中我们要将先前设计的整个图形作为按钮,并让外围的圆环始终围绕中心圆形旋转,在鼠标移入时,还要产生颜色变化及发光效果.   首先用 Microsoft Expr

Oracle中获取执行计划的几种方法分析

以下是对Oracle中获取执行计划的几种方法进行了详细的分析介绍,需要的朋友可以参考下   1. 预估执行计划 - Explain PlanExplain plan以SQL语句作为输入,得到这条SQL语句的执行计划,并将执行计划输出存储到计划表中. 首先,在你要执行的SQL语句前加explain plan for,此时将生成的执行计划存储到计划表中,语句如下: explain plan for SQL语句然后,在计划表中查询刚刚生成的执行计划,语句如下: select * from table(

serial ort-一个cs里的SerialPort接收事件里,修改主程序label元素属性,不成功。

问题描述 一个cs里的SerialPort接收事件里,修改主程序label元素属性,不成功. 大家好,我是新手.请问,有两个cs,一个是SerialPort.cs,一个是Power.MainForm.cs.问题是在 SerialPort的接收事件里,修改主程序的label元素的属性,为什么不成功.代码如下. //serialPort.cs private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArg

android-这两段代码为什么前者可执行,后者不行,若后者不放在run方法里是可执行的

问题描述 这两段代码为什么前者可执行,后者不行,若后者不放在run方法里是可执行的 前者: // 创建子线程 new Thread() { public void run() { try { // 获取源码路径 String path = et_enter.getText().toString().trim(); // 将路径转换为URL URL url = new URL(path); // 利用URL对象得到httpURLconnection对象 用于发送或接收数据 HttpURLConne