2016-11-29 22 views
0

我想在MapPolygon的FillColor属性上使用ColorAnimation。如何为MapPolygon(BingMap MapControl)的FillColor设置动画UWP

我创建了一个热图与BingMap控制UWP Heatmap Preview

我有一个功能,我在那里计算新FillColor每个MapPolygon。我现在要使用ColorAnimation而不是将FillColor从旧值更改为新值。

//Instead of 
statePolygon.FillColor = backGroundColor; 

//I want to use something like the following 
Storyboard storyboard = new Storyboard(); 
ColorAnimation animation = new ColorAnimation(); 
animation.From = statePolygon.FillColor; 
animation.To = newBackGroundColor; 
animation.Duration = new Duration(new TimeSpan(0, 0, 0, 5)); 
storyboard.Children.Add(animation); 
Storyboard.SetTargetProperty(animation, "(MapPolygon.FillColor)"); 
Storyboard.SetTarget(myStoryboard, statePolygon); 
storyboard.Begin(); 

但随着故事板代码,我总是得到一个System.Runtime.InteropServices.COMException这告诉我没有指定动画目标。

我尝试了很多Storyboard.SetTargetproperty的第二个参数值...没有任何工作。

我错过了什么?

回答

1

有两个问题。

在您发布的代码段中,您使用myStoryboard而不是storyboard变量来代替SetTarget。修复似乎解决COMException。但多边形颜色仍然不会动画。

原因是FillColor属性不是DependencyProperty。为了使这个属性的动画,你将不得不开始Storyboard前启用你的动画依赖动画:

animation.EnableDependentAnimation = true; 

依赖和独立的动画之间的区别是described in MSDN documentation。请注意,此动画的表现可能比独立动画有所恶化。

+0

thx很多:)它现在工作。 SetTarget中的myStoryboard是我在xaml中创建的Storyboard,并且忘记更改它。 – David198