Code:
/ 4.0 / 4.0 / 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. //---------------------------------------------------------------- // 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
- StyleXamlTreeBuilder.cs
- RootBrowserWindowProxy.cs
- SafeFileMapViewHandle.cs
- XmlSignificantWhitespace.cs
- RNGCryptoServiceProvider.cs
- RoleManagerModule.cs
- KnownBoxes.cs
- SHA1.cs
- Missing.cs
- Expander.cs
- BoolLiteral.cs
- PeerFlooder.cs
- StreamFormatter.cs
- CodeExpressionCollection.cs
- Activation.cs
- ReachPrintTicketSerializer.cs
- CharacterHit.cs
- CipherData.cs
- TimeoutException.cs
- Operand.cs
- ExtensibleClassFactory.cs
- GetPageNumberCompletedEventArgs.cs
- ReflectPropertyDescriptor.cs
- ClientSettingsStore.cs
- WorkflowLayouts.cs
- HttpClientCertificate.cs
- Currency.cs
- JulianCalendar.cs
- BitmapEffectDrawingContextState.cs
- EnumValidator.cs
- TerminatorSinks.cs
- QueryMatcher.cs
- EventSource.cs
- Decorator.cs
- PolyBezierSegment.cs
- SplitterPanel.cs
- RectangleGeometry.cs
- OptimisticConcurrencyException.cs
- PropertyFilterAttribute.cs
- ObjectTypeMapping.cs
- Int16AnimationUsingKeyFrames.cs
- SmiMetaData.cs
- MetafileEditor.cs
- PopOutPanel.cs
- XmlSchemaInclude.cs
- HashHelper.cs
- SortQuery.cs
- TextEditorSelection.cs
- XmlNodeReader.cs
- AbandonedMutexException.cs
- prefixendpointaddressmessagefilter.cs
- SoapInteropTypes.cs
- NodeFunctions.cs
- BuildDependencySet.cs
- Rectangle.cs
- SimpleHandlerBuildProvider.cs
- _FtpDataStream.cs
- PackWebResponse.cs
- RoutedEventConverter.cs
- DesignColumn.cs
- AssemblyFilter.cs
- SettingsProperty.cs
- OdbcParameterCollection.cs
- InternalBase.cs
- NestPullup.cs
- XmlNavigatorFilter.cs
- BatchStream.cs
- SafeNativeMethodsMilCoreApi.cs
- FilteredXmlReader.cs
- Crc32Helper.cs
- HttpRequestCacheValidator.cs
- SystemColors.cs
- TypeBrowserDialog.cs
- HtmlShimManager.cs
- OAVariantLib.cs
- TextEncodedRawTextWriter.cs
- TargetParameterCountException.cs
- InstanceCreationEditor.cs
- ScriptingAuthenticationServiceSection.cs
- SecurityRuntime.cs
- ServiceOperation.cs
- AnnotationService.cs
- UInt64Storage.cs
- HierarchicalDataBoundControl.cs
- PageContent.cs
- TreeSet.cs
- JsonByteArrayDataContract.cs
- ComboBox.cs
- HelpFileFileNameEditor.cs
- AsymmetricSignatureFormatter.cs
- RealizationContext.cs
- ToolboxComponentsCreatedEventArgs.cs
- OleDbStruct.cs
- activationcontext.cs
- ForeignConstraint.cs
- FixedSOMImage.cs
- SoapElementAttribute.cs
- SafeNativeMethods.cs
- xmlfixedPageInfo.cs
- Expander.cs