发布任何Silverlight动画的问题

时间:2011-06-22 20:50:45

标签: c# wpf silverlight

以下代码用于更改矩形的颜色,但每当我运行它时,我得到的只是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控制台指示属性路径为空。

1 个答案:

答案 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。