Я работаю над созданием кнопки «слайд для разблокировки» для дерьма и хихиканья в WPF.У меня есть два изображения для отображения: внешний черный ящик (SwipeBack), который неподвижен, и внутренний белый ящик (SwipeBar), который является ползунком.OnTouchDown
изображения слайдера, я установил для bool 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
обратно в false и запустил анимацию, чтобы вернуть 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, но я считаю, что не могу изменить поле после первой анимации из-за анимации.Я пытался дать анимации длительность, но даже после того, как время истекло (или количество повторов), поле все равно не может быть изменено.