以下代码用于更改矩形的颜色,但每当我运行它时,我得到的只是100%的silverlight加载屏幕。我还没有运行动画,所以我确信有一些我缺少的基本功能。以下大致改编自msdn网站上的示例代码。这些示例代码都不适用于我,这可能有助于诊断问题:
矩形是一个矩形数组,如果此代码被注释掉,它将出现在屏幕上。
RootElement是放置矩形的网格,在此之上定义。
if (rectangles[5] == null)
MessageBox.Show("Oh dear.");
Storyboard sb = new Storyboard();
Duration duration = new Duration(TimeSpan.FromSeconds(2));
ColorAnimation exampleAnimation = new ColorAnimation();
exampleAnimation.Duration = duration;
sb.Duration = duration;
Storyboard.SetTarget(exampleAnimation, rectangles[5]);
Storyboard.SetTargetProperty(exampleAnimation, new PropertyPath(rectangles[5].Fill));
exampleAnimation.To = Color.FromArgb(255, 255, 255, 255);
RootElement.Resources.Add("unique_id", sb);
sb.Children.Add(exampleAnimation);
sb.Begin();
据我所知,javascript控制台指示属性路径为空。
答案 0 :(得分:0)
您的PropertyPath无效。它需要一个属性的名称,而不是您想要设置动画的属性的值。代码rectangles[5].Fill
将返回一个画笔,即渲染矩形时使用的画笔。您应该使用类似new PropertyPath("Fill")
的内容。
但是在你的情况下,看起来你想要为Fill属性中的SolidColorBrush的Color属性设置动画,然后你想要使用像new PropertyPath("(Shape.Fill).(SolidColorBrush.Color)")
这样的东西。此路径改编自此forum discussion。
您也可以更改目标,只需执行以下操作:
Storyboard.SetTarget(exampleAnimation, rectangles[5].Fill);
Storyboard.SetTargetProperty(exampleAnimation, new PropertyPath("Color"));
当然,这都假设Fill实际上是一个SolidColorBrush。