WPF Storyboard的属性锁定问题

来源:互联网 发布:淘宝怎么投诉天猫超市 编辑:程序博客网 时间:2024/04/30 05:49
比如一个简单DoubleAnimation动画:
myDA = new DoubleAnimation();
myDA.From = this.myObject.Opacity;
myDA.To = 0.1;
myDA.Duration = new Duration(TimeSpan.FromMilliseconds(600));

Storyboard.SetTargetName(myDA, "myObject");
Storyboard.SetTargetProperty(myDA, new PropertyPath(Canvas.OpacityProperty));

mySB = new Storyboard(); 
mySB.Children.Add(myDA);
mySB.Completed += new EventHandler(mySB_Completed);
mySB.Begin(myObject);

Completed事件:
void mySB_Completed(object sender, EventArgs e)
{
myObject.Opacity = 1;
}

透明度为0的动画结束后,在Completed事件中再设为1,程序运行后无效果。

解决方法:

mySB.Begin(myObject);
改成
mySB.Begin(myObject,true);

再在结束事件中加上:
mySB.Remove(myObject);
myObject.Opacity = 1;

就没问题了,因为当一个属性作为Animation时,相应属性就会被锁住,需要用Remove释放掉。而如果想控制StoryBoard,则必须在Begin()时加true参数。
需要注意两点:1.在Remove的同时,已有的Animaition效果会消失掉,而不是停在动画目标值。
2.这个方法只能用于StoryBoard,如果只写DoubleAnimaition就无法解除锁定。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 产后第三天乳房胀痛有硬块怎么办 怀孕七个多月了胎位不正怎么办 怀孕6个月梅毒1:4怎么办 怀孕了胃酸胃涨吐酸水怎么办 怀孕了胃酸胃胀吐酸水怎么办 练瑜伽大腿外侧扭筋了怎么办 膝盖运动时疼痛睡觉不疼怎么办 在农村里床上老是有小蜈蚣该怎么办 瑜伽垫晒太阳后散发的甲醛怎么办 杯子盖上的皮垫子掉了漏水怎么办 20个月宝宝天天晚上不睡觉怎么办 八个月大小孩天天晚上不睡觉怎么办 如果开了光的貔貅不要了要怎么办 刚岀生的婴儿长得太快怎么办 呼市去办牌照时没有牌照怎么办 宾馆发现隐藏的摄像头怎么办报警吗 拍拍贷律师函寄到家里了怎么办 欠了拍拍贷本息一万多了怎么办 把人偷小孩的人贩子打死了怎么办 怀孕3个月没有胎心怎么办 社保局打印关系转移信封之后怎么办 长裙变装外出被发现了怎么办 超变陀螺怎么绳子拉不出来怎么办 梦幻诛仙传说时间得不到东西怎么办 夹在强势母亲和强势老公中间怎么办 工作调动校长总拖着不盖章怎么办 宝贝在妈妈肚子里发育慢怎么办 领导安排你负责一次讲座你怎么办 雷蛇北海巨妖耳机有回音怎么办 手机直播声卡有杂音有回音怎么办 大班见到陌生人入园怎么办安全教案 两首歌合并到一起中间有停顿怎么办 想做主持人但不是播音专业怎么办 动脉造影术2天后穿刺点出血怎么办 战舰世界买了重复金币船怎么办 戒指戴在手上取不下来怎么办 工作中难以和同事上司相处怎么办 老是被上司和同事欺负我该怎么办 桌面太低座位太高写字不舒服怎么办 一个人如果欠下网贷无法偿还怎么办 c语言的编译和运行不见了怎么办