动态创建Storyboard
做动画或者做控件的时候不一定都要在xaml里做Storyboard,有时候在代码里动态创建会更加灵活些。
这里以我做的一个改变颜色的Storyboard为例来做说明。(查了不少英文资料,大多都是对beta2的,和release的版本有些不同)
代码:
Storyboard storyboard = new Storyboard();
Brush br = xRectangle.Fill;
ColorAnimation colorAnim = new ColorAnimation();
colorAnim.To = ToColor;
colorAnim.Duration = TimeSpan.FromSeconds(1);
colorAnim.RepeatBehavior = new RepeatBehavior(1);
colorAnim.AutoReverse = false;
Storyboard.SetTarget(colorAnim, br);
Storyboard.SetTargetProperty(colorAnim, new PropertyPath("Color"));
storyboard.Children.Add(colorAnim);
Resources.Add("colorsb", storyboard);
Brush br = xRectangle.Fill;
ColorAnimation colorAnim = new ColorAnimation();
colorAnim.To = ToColor;
colorAnim.Duration = TimeSpan.FromSeconds(1);
colorAnim.RepeatBehavior = new RepeatBehavior(1);
colorAnim.AutoReverse = false;
Storyboard.SetTarget(colorAnim, br);
Storyboard.SetTargetProperty(colorAnim, new PropertyPath("Color"));
storyboard.Children.Add(colorAnim);
Resources.Add("colorsb", storyboard);
这样一个变换颜色的动画就完成了。
Resources.Add("colorsb", storyboard);
这一句是把Storyboard插入页面的资源中,和beta2不同,资源文件都是建值对应的,所以在这里要指定一个key。
其中高亮部分是我为了做成控件把属性暴露了出去。这个属性就是你要变化到的颜色。