2012-04-28 20 views
5

Im usando un WPF ScrollViewer para alojar algunos controles. Realmente me gustaría interactuar como en un dispositivo táctil donde lentamente vuelve a su lugar cuando lo jalas demasiado.¿Hay alguna manera fácil de hacer que ScrollViewer sea "hinchable"?

no tiene una barra de desplazamiento - Tengo ratón manual de desplazamiento con hacer clic y arrastrar utilizando este código:

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

¿Hay una manera fácil de hacer esto? Actualmente solo funciona como un cuadro de texto de desplazamiento normal y no se moverá fuera de su rango normal, ni lentamente retrocederá.

+0

Ver http://aniscrollviewer.codeplex.com/ - No he comprobado el código pero indica que ha extendido el 'ScrollViewer' estándar para actualizar la posición desde una actualización de animación. – ChrisF

+0

Gracias @ChrisF pero ese ejemplo es solo desplazamiento suave, y no da ningún tipo de interacción "toque sobre arrastre", ni rebota suavemente dentro de sus límites normales: | – kvanberendonck

+0

Ah, ¿no puedes usar una función de relajación diferente? – ChrisF

Respuesta

Cuestiones relacionadas