我正在尝试在Silverlight应用程序中设置LinearGradientBrush(lgb)的动画。我在Page的构造函数中有以下代码:
for (int stops = 0; stops < numStops; stops++)
{
ColorAnimation animation = new ColorAnimation();
animation.To =
Color.FromArgb(255, (byte)rnd.Next(256), (byte)rnd.Next(256), (byte)rnd.Next(256));
animation.Duration = TimeSpan.FromSeconds(1);
Storyboard.SetTarget(animation, lgb);
Storyboard.SetTargetProperty(animation,
new PropertyPath("GradientStops[" + stops.ToString() + "].Color"));
Storyboard story = new Storyboard();
story.Children.Add(animation);
story.Begin();
}
它编译并运行,但不会改变颜色。我只是看不出我做错了什么。
谢谢,
WTS
答案 0 :(得分:1)
您的代码在Silverlight 4和Windows Phone 7下运行正常(WP7几乎是Silverlight 3)。我的猜测是,如果我为SL3构建一个孤立的应用程序,它也会在那里工作。
您的代码中唯一缺少的是首先获取lgb
的方式?您确定它与UI中实际使用的实例相同吗。
例如,我刚刚将画笔添加到我的LayoutRoot网格中,如下所示: -
<Grid x:Name="LayoutRoot">
<Grid.Background>
<LinearGradientBrush EndPoint="1,0.5" StartPoint="0,0.5">
<GradientStop Color="Black" Offset="0" />
<GradientStop Color="White" Offset="1" />
</LinearGradientBrush>
</Grid.Background>
然后在代码中我将lgb分配给: -
LinearGradientBrush lgb = (LinearGradientBrush)LayoutRoot.Background;