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
- XPathSelectionIterator.cs
- AppliedDeviceFiltersEditor.cs
- followingsibling.cs
- TrustSection.cs
- TextEndOfParagraph.cs
- MembershipSection.cs
- DataGridViewSelectedCellCollection.cs
- Exceptions.cs
- NegatedConstant.cs
- ArraySubsetEnumerator.cs
- ServiceReference.cs
- DataGridView.cs
- Dump.cs
- SqlProfileProvider.cs
- ClientUtils.cs
- CryptoApi.cs
- ContentType.cs
- AlignmentYValidation.cs
- ReceiveReply.cs
- CellTreeSimplifier.cs
- ObjectDataSourceMethodEventArgs.cs
- HandledEventArgs.cs
- AttributeConverter.cs
- DetailsView.cs
- CommandEventArgs.cs
- SortKey.cs
- GetPolicyDetailsRequest.cs
- AuthorizationRule.cs
- WmlTextViewAdapter.cs
- TableLayoutColumnStyleCollection.cs
- MailWebEventProvider.cs
- SettingsPropertyCollection.cs
- SqlDataSourceFilteringEventArgs.cs
- _NegoStream.cs
- ComPlusServiceHost.cs
- CompiledELinqQueryState.cs
- DataGridViewControlCollection.cs
- XmlToDatasetMap.cs
- StackOverflowException.cs
- MergablePropertyAttribute.cs
- ReflectionPermission.cs
- MessageEnumerator.cs
- PathTooLongException.cs
- OrthographicCamera.cs
- DataRecordInternal.cs
- CellLabel.cs
- TextDecorationCollectionConverter.cs
- Baml2006ReaderSettings.cs
- Decoder.cs
- DataGridViewTopLeftHeaderCell.cs
- WebPartConnectionCollection.cs
- MatrixCamera.cs
- EdmItemError.cs
- Unit.cs
- HttpRuntimeSection.cs
- MetadataWorkspace.cs
- SystemEvents.cs
- DataGridViewRow.cs
- MULTI_QI.cs
- COM2FontConverter.cs
- XmlSchemaComplexType.cs
- DesignTimeResourceProviderFactoryAttribute.cs
- keycontainerpermission.cs
- NamespaceCollection.cs
- StateChangeEvent.cs
- MetadataProperty.cs
- ConfigXmlSignificantWhitespace.cs
- AttachedPropertyMethodSelector.cs
- CategoryGridEntry.cs
- SwitchCase.cs
- WebPartDisplayModeEventArgs.cs
- PersistNameAttribute.cs
- EffectiveValueEntry.cs
- UnaryNode.cs
- HeaderCollection.cs
- StringValidatorAttribute.cs
- DataBoundLiteralControl.cs
- ProcessHostServerConfig.cs
- CodeSnippetTypeMember.cs
- PermissionSetTriple.cs
- DispatcherEventArgs.cs
- AspNetSynchronizationContext.cs
- HttpWebResponse.cs
- ArrangedElementCollection.cs
- AlternationConverter.cs
- XmlSerializerNamespaces.cs
- CompilerParameters.cs
- SwitchAttribute.cs
- LinkUtilities.cs
- XPathNavigatorKeyComparer.cs
- ErrorWrapper.cs
- D3DImage.cs
- StrongNameSignatureInformation.cs
- SettingsPropertyIsReadOnlyException.cs
- SQLMembershipProvider.cs
- HierarchicalDataSourceControl.cs
- ImplicitInputBrush.cs
- DSACryptoServiceProvider.cs
- ColorConverter.cs
- ProcessHostFactoryHelper.cs