Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Controls / Primitives / SelectiveScrollingGrid.cs / 1305600 / SelectiveScrollingGrid.cs
//---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; namespace System.Windows.Controls.Primitives { ////// Subclass of Grid that knows how to freeze certain cells in place when scrolled. /// Used as the panel for the DataGridRow to hold the header, cells, and details. /// public class SelectiveScrollingGrid : Grid { ////// Attached property to specify the selective scroll behaviour of cells /// public static readonly DependencyProperty SelectiveScrollin----entationProperty = DependencyProperty.RegisterAttached( "SelectiveScrollin----entation", typeof(SelectiveScrollin----entation), typeof(SelectiveScrollingGrid), new FrameworkPropertyMetadata(SelectiveScrollin----entation.Both, new PropertyChangedCallback(OnSelectiveScrollin----entationChanged))); ////// Getter for the SelectiveScrollin----entation attached property /// /// ///public static SelectiveScrollin----entation GetSelectiveScrollin----entation(DependencyObject obj) { return (SelectiveScrollin----entation)obj.GetValue(SelectiveScrollin----entationProperty); } /// /// Setter for the SelectiveScrollin----entation attached property /// /// /// public static void SetSelectiveScrollin----entation(DependencyObject obj, SelectiveScrollin----entation value) { obj.SetValue(SelectiveScrollin----entationProperty, value); } ////// Property changed call back for SelectiveScrollin----entation property /// /// /// private static void OnSelectiveScrollin----entationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { UIElement element = d as UIElement; SelectiveScrollin----entation orientation = (SelectiveScrollin----entation)e.NewValue; ScrollViewer scrollViewer = DataGridHelper.FindVisualParent(element); if (scrollViewer != null && element != null) { Transform transform = element.RenderTransform; if (transform != null) { BindingOperations.ClearBinding(transform, TranslateTransform.XProperty); BindingOperations.ClearBinding(transform, TranslateTransform.YProperty); } if (orientation == SelectiveScrollin----entation.Both) { element.RenderTransform = null; } else { TranslateTransform translateTransform = new TranslateTransform(); // Add binding to XProperty of transform if orientation is not horizontal if (orientation != SelectiveScrollin----entation.Horizontal) { Binding horizontalBinding = new Binding("ContentHorizontalOffset"); horizontalBinding.Source = scrollViewer; BindingOperations.SetBinding(translateTransform, TranslateTransform.XProperty, horizontalBinding); } // Add binding to YProperty of transfrom if orientation is not vertical if (orientation != SelectiveScrollin----entation.Vertical) { Binding verticalBinding = new Binding("ContentVerticalOffset"); verticalBinding.Source = scrollViewer; BindingOperations.SetBinding(translateTransform, TranslateTransform.YProperty, verticalBinding); } element.RenderTransform = translateTransform; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. //---------------------------------------------------------------------------- // // Copyright (C) Microsoft Corporation. All rights reserved. // //--------------------------------------------------------------------------- using System; using System.Windows; using System.Windows.Controls; using System.Windows.Data; using System.Windows.Media; namespace System.Windows.Controls.Primitives { /// /// Subclass of Grid that knows how to freeze certain cells in place when scrolled. /// Used as the panel for the DataGridRow to hold the header, cells, and details. /// public class SelectiveScrollingGrid : Grid { ////// Attached property to specify the selective scroll behaviour of cells /// public static readonly DependencyProperty SelectiveScrollin----entationProperty = DependencyProperty.RegisterAttached( "SelectiveScrollin----entation", typeof(SelectiveScrollin----entation), typeof(SelectiveScrollingGrid), new FrameworkPropertyMetadata(SelectiveScrollin----entation.Both, new PropertyChangedCallback(OnSelectiveScrollin----entationChanged))); ////// Getter for the SelectiveScrollin----entation attached property /// /// ///public static SelectiveScrollin----entation GetSelectiveScrollin----entation(DependencyObject obj) { return (SelectiveScrollin----entation)obj.GetValue(SelectiveScrollin----entationProperty); } /// /// Setter for the SelectiveScrollin----entation attached property /// /// /// public static void SetSelectiveScrollin----entation(DependencyObject obj, SelectiveScrollin----entation value) { obj.SetValue(SelectiveScrollin----entationProperty, value); } ////// Property changed call back for SelectiveScrollin----entation property /// /// /// private static void OnSelectiveScrollin----entationChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) { UIElement element = d as UIElement; SelectiveScrollin----entation orientation = (SelectiveScrollin----entation)e.NewValue; ScrollViewer scrollViewer = DataGridHelper.FindVisualParent(element); if (scrollViewer != null && element != null) { Transform transform = element.RenderTransform; if (transform != null) { BindingOperations.ClearBinding(transform, TranslateTransform.XProperty); BindingOperations.ClearBinding(transform, TranslateTransform.YProperty); } if (orientation == SelectiveScrollin----entation.Both) { element.RenderTransform = null; } else { TranslateTransform translateTransform = new TranslateTransform(); // Add binding to XProperty of transform if orientation is not horizontal if (orientation != SelectiveScrollin----entation.Horizontal) { Binding horizontalBinding = new Binding("ContentHorizontalOffset"); horizontalBinding.Source = scrollViewer; BindingOperations.SetBinding(translateTransform, TranslateTransform.XProperty, horizontalBinding); } // Add binding to YProperty of transfrom if orientation is not vertical if (orientation != SelectiveScrollin----entation.Vertical) { Binding verticalBinding = new Binding("ContentVerticalOffset"); verticalBinding.Source = scrollViewer; BindingOperations.SetBinding(translateTransform, TranslateTransform.YProperty, verticalBinding); } element.RenderTransform = translateTransform; } } } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- HtmlTextArea.cs
- CompoundFileIOPermission.cs
- SurrogateSelector.cs
- SimpleBitVector32.cs
- FeatureSupport.cs
- FloatUtil.cs
- DocumentXmlWriter.cs
- ResourceAttributes.cs
- XmlWellformedWriter.cs
- FontDriver.cs
- DocumentViewerBase.cs
- DrawingGroup.cs
- SizeConverter.cs
- InvokePattern.cs
- ApplicationInterop.cs
- webeventbuffer.cs
- TableChangeProcessor.cs
- XmlSerializationWriter.cs
- SQLSingle.cs
- _BufferOffsetSize.cs
- TableCell.cs
- MethodToken.cs
- TrackingStringDictionary.cs
- Quaternion.cs
- _ConnectStream.cs
- HMACSHA256.cs
- SymmetricAlgorithm.cs
- RuntimeConfigLKG.cs
- InteropBitmapSource.cs
- DefaultValueTypeConverter.cs
- ApplicationSecurityManager.cs
- Char.cs
- SortExpressionBuilder.cs
- TableRow.cs
- AmbientProperties.cs
- InternalException.cs
- DbSetClause.cs
- ExtendedTransformFactory.cs
- ShapingWorkspace.cs
- PathStreamGeometryContext.cs
- OdbcTransaction.cs
- BasicHttpSecurity.cs
- Stroke2.cs
- DesignSurfaceCollection.cs
- AlphaSortedEnumConverter.cs
- SystemIPInterfaceProperties.cs
- FeatureManager.cs
- ListenerElementsCollection.cs
- Geometry3D.cs
- Semaphore.cs
- SimpleHandlerFactory.cs
- DataServiceException.cs
- MenuScrollingVisibilityConverter.cs
- CallContext.cs
- StreamingContext.cs
- EncoderExceptionFallback.cs
- IdentifierCreationService.cs
- PermissionAttributes.cs
- Attributes.cs
- CompilationPass2TaskInternal.cs
- TreeViewHitTestInfo.cs
- PartialCachingControl.cs
- DiagnosticTrace.cs
- BindingNavigator.cs
- WebBrowser.cs
- TriggerAction.cs
- DomNameTable.cs
- ContentFileHelper.cs
- ResourceExpressionEditor.cs
- cookieexception.cs
- OpCellTreeNode.cs
- QuaternionAnimationBase.cs
- datacache.cs
- PerformanceCounterPermissionEntryCollection.cs
- ResourceDefaultValueAttribute.cs
- Rotation3D.cs
- DbConnectionHelper.cs
- CodeDirectionExpression.cs
- XslCompiledTransform.cs
- PassportIdentity.cs
- mediaeventargs.cs
- ControlTemplate.cs
- FormattedText.cs
- MachineKeySection.cs
- LayoutExceptionEventArgs.cs
- _NegoStream.cs
- StrongBox.cs
- bidPrivateBase.cs
- RenderingEventArgs.cs
- CryptoApi.cs
- Models.cs
- ThreadBehavior.cs
- HttpResponseInternalWrapper.cs
- MULTI_QI.cs
- FilterQuery.cs
- DataBoundControlDesigner.cs
- LogicalExpr.cs
- XmlSchemaException.cs
- NamespaceEmitter.cs
- EnvelopedSignatureTransform.cs