2011-09-09 146 views
0

我正在为WPF中的狗屎和笑声创建一个“滑动解锁”按钮。我有两个图像要显示:静止的外部黑色框(S​​wipeBack)和作为滑块的内部白色框(SwipeBar)。 OnTouchDown的滑块图像,我设置布尔IsDragging为true。 OnTouchMove,我通过调整图像的左边距来移动图像(可能有更好的方法,但是这种方法可行)。这里是OnTouchMove代码:动画冻结了它的动画值?

private void SwipeBar_TouchMove(object sender, TouchEventArgs e) { 
     if (IsDragging) { 
      int x = (int)e.GetTouchPoint(SwipeBack).Position.X; 
      int left = (int)(x - SwipeBar.ActualWidth/2); 
      left = Math.Max(15, left); 
      left = Math.Min(left, (int)(SwipeBack.ActualWidth - 15 - SwipeBar.ActualWidth)); 
      Thickness m = SwipeBar.Margin; 
      m.Left = left; 
      SwipeBar.Margin = m; 
     } 
    } 

在我OnTouchUp情况下,我设置IsDragging回假并运行一个动画返回SwipeBar回到休息的左手位置(背于15余量),下面是代码:

private void SwipeBar_TouchUp(object sender, TouchEventArgs e) { 
     IsDragging = false; 
     ThicknessAnimation slideBack = new ThicknessAnimation(); 
     slideBack.From = SwipeBar.Margin; 
     Thickness to = SwipeBar.Margin; 
     to.Left = 15; 
     slideBack.To = to; 
     ExponentialEase ease = new ExponentialEase(); 
     ease.Exponent = 7; 
     slideBack.EasingFunction = ease; 
     SwipeBar.BeginAnimation(Image.MarginProperty, slideBack); 
    } 

我遇到的问题是,第一次动画运行后,我再也不能操纵SwipeBar的保证金做另一张幻灯片。我是新来的WPF和特别是WPF动画,但我相信我不能改变第一次动画后的边缘,因为动画。我试着给动画持续一段时间,但即使在时间到期后(或重试次数),边距仍然无法修改。

回答