private void Each_Tick(object o, EventArgs sender) { if (ScrollRight) { if (myTargetScrollViewer.HorizontalOffset == myTargetScrollViewer.ScrollableWidth) { ScrollRight = false; } else { myTargetScrollViewer.ScrollToHorizontalOffset(myTargetScrollViewer.HorizontalOffset + ScrollPixelsPerTick); if (DraggedObject != null && myTestoffset != myTargetScrollViewer.HorizontalOffset) { DraggedObject.SetValue(Canvas.LeftProperty, (double)(DraggedObject.GetValue(Canvas.LeftProperty)) + (ScrollPixelsPerTick)); } myTestoffset = myTargetScrollViewer.HorizontalOffset; } } if (ScrollLeft) { if (myTargetScrollViewer.HorizontalOffset == 0) { ScrollLeft = false; } else { myTargetScrollViewer.ScrollToHorizontalOffset(myTargetScrollViewer.HorizontalOffset - ScrollPixelsPerTick); if (DraggedObject != null && myTestoffset != myTargetScrollViewer.HorizontalOffset) { DraggedObject.SetValue(Canvas.LeftProperty, (double)(DraggedObject.GetValue(Canvas.LeftProperty)) - (ScrollPixelsPerTick)); } myTestoffset = myTargetScrollViewer.HorizontalOffset; } } if (ScrollDown) { myTargetScrollViewer.ScrollToVerticalOffset(myTargetScrollViewer.VerticalOffset + ScrollPixelsPerTick); if (DraggedObject != null && myTestvoffset != myTargetScrollViewer.VerticalOffset) { DraggedObject.SetValue(Canvas.TopProperty, (double)(DraggedObject.GetValue(Canvas.TopProperty)) + (ScrollPixelsPerTick)); } myTestvoffset = myTargetScrollViewer.VerticalOffset; } if (ScrollUp) { if (myTargetScrollViewer.VerticalOffset == 0) { ScrollUp = false; } else { myTargetScrollViewer.ScrollToVerticalOffset(myTargetScrollViewer.VerticalOffset - ScrollPixelsPerTick); if (DraggedObject != null && myTestvoffset != myTargetScrollViewer.VerticalOffset) { DraggedObject.SetValue(Canvas.TopProperty, (double)(DraggedObject.GetValue(Canvas.TopProperty)) - (ScrollPixelsPerTick)); } myTestvoffset = myTargetScrollViewer.VerticalOffset; } } }