2011-09-09 4 views
0

私はWPFでくそと笑いのためにボタンを「ロックを解除するスライド」の作成に取り組んでいます。表示する画像は2つあります。外側の黒いボックス(SwipeBack)は固定され、内側の白いボックス(SwipeBar)はスライダーです。スライダー画像のOnTouchDownは、私がtrueにブール値IsDraggingを設定します。 OnTouchMove、左マージンを調整して画像を移動します(もっと良い方法があるかもしれませんが、これは機能します)。ここOnTouchMoveコードされています。私のOnTouchUpイベントでアニメーションはアニメーション化された値をフリーズしますか?

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; 
     } 
    } 

、私は戻ってfalseにIsDraggingを設定し、バック休息左手の位置(15の余白に戻っ)にSwipeBarを返すようにアニメーションを実行して、ここにいることですコード:

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アニメーションが初めてですが、アニメーションのために最初のアニメーションの後にマージンを変更することはできません。アニメーションに時間を与えようとしましたが、時間が経過しても(または再試行回数)、マージンを変更することはできません。

答えて

関連する問題