2011-09-09 92 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動畫,但我相信我不能改變第一次動畫後的邊緣,因爲動畫。我試着給動畫持續一段時間,但即使在時間到期後(或重試次數),邊距仍然無法修改。

回答