在反复讨论动画的责任,担心设计师把代码塞进blend中,并真正让它工作之后,我(暂时)找到了一种解决方案。。。
启动时在MainWindow.xaml.cs中调用:
private void initialiseCustomAnimations()
{
compassRoseAnimation = new DoubleAnimation();
compassRoseAnimation.Duration = new Duration(TimeSpan.FromSeconds(2));
navigationData.PropertyChanged += new System.ComponentModel.PropertyChangedEventHandler(navigationData_PropertyChanged);
}
这就是勇气
CompassWithNumbersControl
是画布内置的混合体):
private void navigationData_PropertyChanged(object sender, EventArgs e)
{
compassRoseAnimation.From = navigationData.previousHeading;
compassRoseAnimation.To = navigationData.heading;
RotateTransform rotateTransform = new RotateTransform();
CompassWithNumbersControl.RenderTransform = rotateTransform;
rotateTransform.BeginAnimation(RotateTransform.AngleProperty, compassRoseAnimation);
}
我应该只在正确的事件被触发时执行这个动画,但它是有效的。。