2012-04-28 6 views
5

Im przy użyciu Przeglądarka przewijania WPF do obsługi niektórych formantów. Naprawdę chciałbym, żeby to było tak jak na urządzeniu dotykowym, które powoli przesuwa się z powrotem na miejsce, gdy pociągnie się za daleko.Czy istnieje prosty sposób, aby zrobić ScrollViewer "skoczny"?

Nie ma pasek przewijania - Mam instrukcja myszki przewijanie kliknięcie i przeciągnięcie za pomocą tego kodu:

Point currentPoint = e.GetPosition(this); 

// Determine the new amount to scroll. 
Point delta = new Point(scrollStartPoint.X - currentPoint.X, scrollStartPoint.Y - currentPoint.Y); 

if (Math.Abs(delta.X) < PixelsToMoveToBeConsideredScroll && 
    Math.Abs(delta.Y) < PixelsToMoveToBeConsideredScroll) 
    return; 

scrollTarget.X = scrollStartOffset.X + delta.X; 
scrollTarget.Y = scrollStartOffset.Y + delta.Y; 

// Scroll to the new position. 
sv.ScrollToHorizontalOffset(scrollTarget.X); 
sv.ScrollToVerticalOffset(scrollTarget.Y); 

Czy istnieje prosty sposób to zrobić? Obecnie działa on jak zwykły przewijany tekst i nie wyjdzie poza swój normalny zasięg, ani nie cofnie się.

+0

Zobacz http://aniscrollviewer.codeplex.com/ - Nie sprawdziłem kodu, ale stwierdza on, że rozszerzył standardowy "ScrollViewer", aby zaktualizować pozycję z aktualizacji animacji. – ChrisF

+0

Dzięki @ChrisF, ale ten przykład jest tylko płynnym przewijaniem i nie daje żadnej interakcji typu "dotknij przeciągnij" ani płynnie odbija się w normalnych granicach: | – kvanberendonck

+0

Ah - czy nie możesz użyć innej funkcji rozluźniania? – ChrisF

Odpowiedz