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