此项目位于.net 4下的c#。
我有一个自定义对象,每隔一段时间就会改变一次。 UI控件应该反映最新状态 - 所以我正在尝试使用绑定,但我无法将其连接起来。
我希望控件注意到对象的值何时更改(绑定?),然后在1/2秒左右动画(Storyboard?)到新值。它是特定于方向的,所以如果旧值是340度,而新值是15度,我不希望它围绕“长路”旋转,所以在某处需要一些动画逻辑。
理想情况下,此动画详细信息的所有应位于UI(xaml)中 - 我更新的对象不想了解UI详细信息。 Blend4中的工具似乎无法胜任工作,而我在xaml中的黑客攻击无处可寻......
我是否应该有另一个对象来侦听源对象的更改,然后每次都配置动画?是不是全部都在xaml? '真正的'代码?
有谁知道正确的方法,在这里?或者可以指出有人写博客的东西非常相似?我已经在这两天了,现在!
答案 0 :(得分:0)
在动画责任方面来回走动,害怕设计师将代码填入混合中,实际上让它正常工作,我(临时)已经找到了各种各样的解决方案......
在启动时在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);
}
我应该只在正确的事件被触发时执行这个动画,但它可以工作..