Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / View / AutoScrollHelper.cs / 1305376 / AutoScrollHelper.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.View { using System; using System.Windows; using System.Windows.Media; using System.Windows.Controls; using System.Windows.Input; internal static class AutoScrollHelper { const int scrollBuffer = 30; public static void AutoScroll(MouseEventArgs e, DependencyObject element) { FrameworkElement logicalView = element as FrameworkElement; while (element != null) { element = VisualTreeHelper.GetParent(element); if (element != null && element is ScrollViewer) { break; } } ScrollViewer scrollViewer = element as ScrollViewer; if (scrollViewer != null) { AutoScroll(e.GetPosition(scrollViewer), scrollViewer, logicalView != null ? e.GetPosition(logicalView) : (Point?)null, logicalView, 25, 25, 1); } } public static void AutoScroll(DragEventArgs e, ScrollViewer scrollViewer) { AutoScroll(e.GetPosition (scrollViewer), scrollViewer, null, null, 50, 50, 10); } static void AutoScroll(Point positionInScrollViewer, ScrollViewer scrollViewer, Point? positionInLogicalView, FrameworkElement logicalView, double scrollOnDragThresholdX, double scrollOnDragThresholdY, int scrollOnDragOffset) { double scrollViewerWidth = scrollViewer.ActualWidth; double scrollViewerHeight = scrollViewer.ActualHeight; double logicalViewWidth = 0; double logicalViewHeight = 0; if (logicalView != null) { logicalViewWidth = logicalView.ActualWidth; logicalViewHeight = logicalView.ActualHeight; } int heightToScroll = 0; int widthToScroll = 0; if (positionInScrollViewer.X > (scrollViewerWidth - scrollOnDragThresholdX) && (positionInLogicalView == null || positionInLogicalView.Value.X < (logicalViewWidth - scrollBuffer))) { widthToScroll = scrollOnDragOffset; } else if (positionInScrollViewer.X < scrollOnDragThresholdX && (positionInLogicalView == null || positionInLogicalView.Value.X > scrollBuffer)) { widthToScroll = -scrollOnDragOffset; } if (positionInScrollViewer.Y > (scrollViewerHeight - scrollOnDragThresholdY) && (positionInLogicalView == null || positionInLogicalView.Value.Y < logicalViewHeight - scrollBuffer)) { heightToScroll = scrollOnDragOffset; } else if (positionInScrollViewer.Y < scrollOnDragThresholdY && (positionInLogicalView == null || positionInLogicalView.Value.Y > scrollBuffer)) { heightToScroll = -scrollOnDragOffset; } if (widthToScroll != 0 || heightToScroll != 0) { scrollViewer.ScrollToVerticalOffset(scrollViewer.VerticalOffset + heightToScroll); scrollViewer.ScrollToHorizontalOffset(scrollViewer.HorizontalOffset + widthToScroll); } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XamlFxTrace.cs
- PageThemeParser.cs
- KeyedHashAlgorithm.cs
- Int64AnimationBase.cs
- WindowsFormsHostAutomationPeer.cs
- Mouse.cs
- Quaternion.cs
- XPathSelfQuery.cs
- IBuiltInEvidence.cs
- AbsoluteQuery.cs
- SHA1Managed.cs
- SQLRoleProvider.cs
- SqlParameterCollection.cs
- Parameter.cs
- Authorization.cs
- SqlDataSourceQuery.cs
- GridItemCollection.cs
- TdsParserStaticMethods.cs
- HelpExampleGenerator.cs
- BulletChrome.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- MobileControlsSectionHelper.cs
- PaperSource.cs
- JsonCollectionDataContract.cs
- ListChangedEventArgs.cs
- CoreSwitches.cs
- userdatakeys.cs
- HttpConfigurationSystem.cs
- Html32TextWriter.cs
- ApplicationException.cs
- InternalBase.cs
- ObfuscationAttribute.cs
- HelpEvent.cs
- LiteralLink.cs
- ResourcesGenerator.cs
- PrintingPermissionAttribute.cs
- ChtmlCalendarAdapter.cs
- _BasicClient.cs
- DependencyPropertyKind.cs
- ServerValidateEventArgs.cs
- ToolBarButtonClickEvent.cs
- DSASignatureDeformatter.cs
- MaskedTextBox.cs
- WorkBatch.cs
- MULTI_QI.cs
- DependencyPropertyKey.cs
- DrawingVisualDrawingContext.cs
- XmlSubtreeReader.cs
- Int64.cs
- TextLineBreak.cs
- MultidimensionalArrayItemReference.cs
- CommentAction.cs
- LabelEditEvent.cs
- ConstraintCollection.cs
- XmlNodeComparer.cs
- GridViewSortEventArgs.cs
- SqlResolver.cs
- HMAC.cs
- MemoryRecordBuffer.cs
- RectangleHotSpot.cs
- Opcode.cs
- EtwTrackingBehavior.cs
- PolyBezierSegment.cs
- StringSource.cs
- InertiaExpansionBehavior.cs
- AgileSafeNativeMemoryHandle.cs
- HtmlControl.cs
- FigureParagraph.cs
- WebPartVerbsEventArgs.cs
- RsaSecurityKey.cs
- WMIInterop.cs
- CacheEntry.cs
- PermissionAttributes.cs
- AttributeCollection.cs
- ApplicationContext.cs
- DateTimeConverter.cs
- SynchronizedDispatch.cs
- TdsParserSessionPool.cs
- DynamicControl.cs
- Assert.cs
- PaintValueEventArgs.cs
- IgnorePropertiesAttribute.cs
- shaper.cs
- CategoryGridEntry.cs
- complextypematerializer.cs
- ZipIOLocalFileBlock.cs
- ProfileBuildProvider.cs
- SecurityTokenTypes.cs
- SapiRecoContext.cs
- SubstitutionDesigner.cs
- TextSelectionHelper.cs
- TrackingMemoryStream.cs
- AspCompat.cs
- ByteBufferPool.cs
- CodeGeneratorOptions.cs
- Globals.cs
- ViewBox.cs
- Part.cs
- LinqDataView.cs
- SqlDuplicator.cs