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
- PasswordRecovery.cs
- WebPartTransformerCollection.cs
- AnimationTimeline.cs
- IConvertible.cs
- IsolatedStorageFile.cs
- LinqDataSourceStatusEventArgs.cs
- TextBoxView.cs
- LineServices.cs
- NativeRecognizer.cs
- CodeTypeParameterCollection.cs
- TiffBitmapDecoder.cs
- SpellerHighlightLayer.cs
- ToolStripGripRenderEventArgs.cs
- SamlAdvice.cs
- DataGridRowClipboardEventArgs.cs
- PkcsMisc.cs
- FontNameConverter.cs
- CompositeDataBoundControl.cs
- HtmlInputRadioButton.cs
- AmbiguousMatchException.cs
- FontInfo.cs
- CodeDefaultValueExpression.cs
- ActiveXContainer.cs
- ProgressBar.cs
- OleDbParameterCollection.cs
- HitTestDrawingContextWalker.cs
- VSWCFServiceContractGenerator.cs
- CommonGetThemePartSize.cs
- DesignerSelectionListAdapter.cs
- PhysicalAddress.cs
- HtmlHistory.cs
- SoapIgnoreAttribute.cs
- InvokeMethodDesigner.xaml.cs
- BindingList.cs
- ToolStripTextBox.cs
- ComPlusAuthorization.cs
- CLSCompliantAttribute.cs
- XmlSchemaComplexContent.cs
- StopRoutingHandler.cs
- SqlClientWrapperSmiStreamChars.cs
- SiteOfOriginPart.cs
- TypeValidationEventArgs.cs
- WindowsListViewScroll.cs
- SecurityContext.cs
- XmlSerializationGeneratedCode.cs
- URLAttribute.cs
- BitmapEffectGeneralTransform.cs
- LocatorPartList.cs
- TimelineCollection.cs
- ScriptModule.cs
- UnwrappedTypesXmlSerializerManager.cs
- UnsafeNativeMethodsPenimc.cs
- GridViewEditEventArgs.cs
- XPathArrayIterator.cs
- XmlCharType.cs
- XpsFixedDocumentReaderWriter.cs
- HandlerBase.cs
- XmlDictionaryString.cs
- EntityStoreSchemaFilterEntry.cs
- WhiteSpaceTrimStringConverter.cs
- UndoManager.cs
- EnumerationRangeValidationUtil.cs
- TypeLibConverter.cs
- Group.cs
- PropertyValueChangedEvent.cs
- XPathNodeHelper.cs
- WebPartMenu.cs
- AssemblyCollection.cs
- TypeDescriptorContext.cs
- ObjectKeyFrameCollection.cs
- ManagementOptions.cs
- VisualStyleTypesAndProperties.cs
- safemediahandle.cs
- Imaging.cs
- WebPartsSection.cs
- XmlChoiceIdentifierAttribute.cs
- SmtpClient.cs
- RegexNode.cs
- BaseDataList.cs
- smtpconnection.cs
- ThreadStateException.cs
- DataGridViewCellStyle.cs
- ArrayWithOffset.cs
- ToolboxCategory.cs
- iisPickupDirectory.cs
- ListViewGroupItemCollection.cs
- RegexWorker.cs
- XmlNavigatorStack.cs
- ExpressionQuoter.cs
- SByte.cs
- SafeFileHandle.cs
- SqlConnectionFactory.cs
- StorageMappingFragment.cs
- WebPartAddingEventArgs.cs
- Rotation3DKeyFrameCollection.cs
- ScrollBar.cs
- IPEndPointCollection.cs
- ToolStripDropTargetManager.cs
- DiscoveryReference.cs
- OracleNumber.cs