2个回答
2015-01-08
展开全部
定义好两个动画后,直接在后台同时调用Begin方法啊。
不过建议将两个Animation动画写在一个Storyboard中。然后对Storyboard定义x:Key。最后在后台代码中对动画调用Begin方法。
例如:(没经过编译器确认,写个思路提醒吧。)
XAML:
<Storyboard x:Key="abc">
<DoubleAnimation ..... />
<DoubleAnimation ..... />
</Storyboard>
C#
abc.Begin();
不过建议将两个Animation动画写在一个Storyboard中。然后对Storyboard定义x:Key。最后在后台代码中对动画调用Begin方法。
例如:(没经过编译器确认,写个思路提醒吧。)
XAML:
<Storyboard x:Key="abc">
<DoubleAnimation ..... />
<DoubleAnimation ..... />
</Storyboard>
C#
abc.Begin();
追问
能否些具体一点啊?比如说XAML代码的一般结构(具体放在代码在哪个位置)。谢谢!
追答
额。我上面说的方法是在Metro中的写法。WPF中,没试出来。在WPF中好像写在EventTrigger可以。就在C#中定义吧。
XAML:
C#:
var s = new Storyboard();
var a1 = new DoubleAnimation();
Storyboard.SetTargetName(a1, "gidPanel");
Storyboard.SetTargetProperty(a1, new PropertyPath(Grid.OpacityProperty));
a1.From = 1;
a1.To = 0;
a1.Duration = new Duration(new TimeSpan(0, 0, 1));
var a2 = new DoubleAnimation();
Storyboard.SetTargetName(a2, "gidPanel");
Storyboard.SetTargetProperty(a2, new PropertyPath(Canvas.LeftProperty));
a2.From = 0;
a2.To = 100;
a2.Duration = new Duration(new TimeSpan(0, 0, 1));
s.Children.Add(a1);
s.Children.Add(a2);
s.Begin(this);
展开全部
可以使用BeginAnimation( )方法同时加载多个动画。BeginAnimation( )方法几乎总是立即返回,从而可以使用类似下面的代码同时为两个属性应用动画:
DoubleAnimation widthAnimation = new DoubleAnimation();
widthAnimation.From = 160;
widthAnimation.To = this.Width - 30;
widthAnimation.Duration = TimeSpan.FromSeconds(5);
DoubleAnimation heightAnimation = new DoubleAnimation();
heightAnimation.From = 40;
heightAnimation.To = this.Height - 50;
heightAnimation.Duration = TimeSpan.FromSeconds(5);
cmdGrow.BeginAnimation(Button.WidthProperty, widthAnimation);
cmdGrow.BeginAnimation(Button.HeightProperty, heightAnimation);
在这个示例中,两个动画没有被同步。这意味着宽度和高度不会准确地在相同的时间间隔内增长(通常,将会看到按钮先增加宽度紧接着增加高度)。可以通过创建绑定到同一个时间线的动画,突破这一限制。
DoubleAnimation widthAnimation = new DoubleAnimation();
widthAnimation.From = 160;
widthAnimation.To = this.Width - 30;
widthAnimation.Duration = TimeSpan.FromSeconds(5);
DoubleAnimation heightAnimation = new DoubleAnimation();
heightAnimation.From = 40;
heightAnimation.To = this.Height - 50;
heightAnimation.Duration = TimeSpan.FromSeconds(5);
cmdGrow.BeginAnimation(Button.WidthProperty, widthAnimation);
cmdGrow.BeginAnimation(Button.HeightProperty, heightAnimation);
在这个示例中,两个动画没有被同步。这意味着宽度和高度不会准确地在相同的时间间隔内增长(通常,将会看到按钮先增加宽度紧接着增加高度)。可以通过创建绑定到同一个时间线的动画,突破这一限制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询