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
- PropertyGridView.cs
- MemoryPressure.cs
- WindowsFormsLinkLabel.cs
- RSAPKCS1KeyExchangeFormatter.cs
- PublishLicense.cs
- XmlSchemaObject.cs
- UpdatePanelTriggerCollection.cs
- SchemaNotation.cs
- WebPartTransformerAttribute.cs
- XMLSyntaxException.cs
- LinqDataSourceStatusEventArgs.cs
- oledbmetadatacollectionnames.cs
- EdmComplexPropertyAttribute.cs
- AsyncStreamReader.cs
- OletxEnlistment.cs
- SamlSecurityToken.cs
- VectorAnimationBase.cs
- StretchValidation.cs
- DocumentViewerBaseAutomationPeer.cs
- SessionPageStateSection.cs
- Baml2006SchemaContext.cs
- MenuItemStyle.cs
- CalendarSelectionChangedEventArgs.cs
- RowUpdatedEventArgs.cs
- Label.cs
- ImageListUtils.cs
- WebException.cs
- ReadOnlyCollection.cs
- View.cs
- Int32CAMarshaler.cs
- EventListener.cs
- ProjectionNode.cs
- datacache.cs
- ListView.cs
- WindowsTab.cs
- ConfigurationManagerHelper.cs
- Registry.cs
- MailMessageEventArgs.cs
- ControlParser.cs
- FormsAuthenticationUserCollection.cs
- DateTimeValueSerializer.cs
- DataGridViewRowsAddedEventArgs.cs
- DataContract.cs
- FormatConvertedBitmap.cs
- LZCodec.cs
- DataPagerFieldItem.cs
- StrokeNode.cs
- LeaseManager.cs
- ConnectionProviderAttribute.cs
- Aggregates.cs
- BamlResourceContent.cs
- UnsafePeerToPeerMethods.cs
- SBCSCodePageEncoding.cs
- AutomationProperty.cs
- ListViewGroupConverter.cs
- ToggleProviderWrapper.cs
- MarkupObject.cs
- MonitoringDescriptionAttribute.cs
- Size.cs
- AssemblyBuilder.cs
- ProxySimple.cs
- InternalConfirm.cs
- InputScopeManager.cs
- ObjectDataSourceMethodEventArgs.cs
- FixedFindEngine.cs
- SamlConstants.cs
- UserNameSecurityTokenProvider.cs
- InvalidWMPVersionException.cs
- HwndKeyboardInputProvider.cs
- GetPageNumberCompletedEventArgs.cs
- CodeTypeDelegate.cs
- LineSegment.cs
- HostingPreferredMapPath.cs
- SystemDropShadowChrome.cs
- SessionStateUtil.cs
- CodeRemoveEventStatement.cs
- WebPermission.cs
- SqlConnectionFactory.cs
- XmlQueryContext.cs
- GetPageNumberCompletedEventArgs.cs
- SqlDataSourceCommandEventArgs.cs
- ValueQuery.cs
- TextParagraphProperties.cs
- OptimalTextSource.cs
- TypeCodeDomSerializer.cs
- XmlEncoding.cs
- MenuItemBindingCollection.cs
- SharedStatics.cs
- mansign.cs
- GridViewSelectEventArgs.cs
- WebBrowserHelper.cs
- XmlSchemaAttributeGroup.cs
- EntityDescriptor.cs
- FigureParaClient.cs
- Preprocessor.cs
- LicenseContext.cs
- ProxyGenerationError.cs
- ContractHandle.cs
- ellipse.cs
- InputLanguage.cs