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
- ToolStripMenuItem.cs
- KeyboardNavigation.cs
- TextElementEditingBehaviorAttribute.cs
- MatrixTransform3D.cs
- SizeConverter.cs
- ContractTypeNameCollection.cs
- Executor.cs
- Environment.cs
- PointHitTestResult.cs
- DurationConverter.cs
- DataContractSet.cs
- Model3D.cs
- SymmetricAlgorithm.cs
- ImageFormatConverter.cs
- RequestCacheEntry.cs
- ValidatingPropertiesEventArgs.cs
- SqlBulkCopyColumnMappingCollection.cs
- COAUTHIDENTITY.cs
- safelinkcollection.cs
- ColumnBinding.cs
- Vector3DAnimationUsingKeyFrames.cs
- PassportAuthenticationModule.cs
- LateBoundBitmapDecoder.cs
- DrawingServices.cs
- FloaterBaseParagraph.cs
- DrawingState.cs
- WebConfigurationManager.cs
- WorkflowIdleElement.cs
- BrowserTree.cs
- BuildProviderUtils.cs
- BufferedConnection.cs
- FamilyTypefaceCollection.cs
- Table.cs
- SessionStateItemCollection.cs
- DataGridColumnCollection.cs
- UnwrappedTypesXmlSerializerManager.cs
- CustomTypeDescriptor.cs
- StreamGeometry.cs
- thaishape.cs
- MsmqDecodeHelper.cs
- HMACSHA512.cs
- ProtocolViolationException.cs
- ISAPIWorkerRequest.cs
- ClientConfigurationHost.cs
- BitmapPalettes.cs
- RegexCapture.cs
- SatelliteContractVersionAttribute.cs
- StrokeNodeData.cs
- FocusTracker.cs
- IOException.cs
- Int16AnimationBase.cs
- AspNetHostingPermission.cs
- DataComponentMethodGenerator.cs
- ConfigurationElement.cs
- SamlAudienceRestrictionCondition.cs
- TextLineBreak.cs
- DataContractSerializerElement.cs
- Int64Storage.cs
- WebUtility.cs
- DesignerActionPanel.cs
- PreviewKeyDownEventArgs.cs
- WindowsRichEdit.cs
- UnsafeNativeMethods.cs
- WebPartHelpVerb.cs
- ObjectDataSourceStatusEventArgs.cs
- SkewTransform.cs
- PagesSection.cs
- X509CertificateTrustedIssuerElement.cs
- DbConnectionClosed.cs
- TdsParserStateObject.cs
- HMACRIPEMD160.cs
- Vector3DAnimation.cs
- GroupBox.cs
- GridViewCancelEditEventArgs.cs
- CalendarButton.cs
- RedirectionProxy.cs
- SymLanguageVendor.cs
- StringAnimationUsingKeyFrames.cs
- InnerItemCollectionView.cs
- CodeAccessSecurityEngine.cs
- FilterException.cs
- FormsAuthenticationEventArgs.cs
- TypeSystem.cs
- DbProviderSpecificTypePropertyAttribute.cs
- XPathNavigatorKeyComparer.cs
- ValueQuery.cs
- EventNotify.cs
- ModuleBuilderData.cs
- OutputCacheProfileCollection.cs
- WebCategoryAttribute.cs
- TableParaClient.cs
- ControlType.cs
- EnvironmentPermission.cs
- FormViewInsertedEventArgs.cs
- HierarchicalDataSourceDesigner.cs
- CompositeControl.cs
- TypeSystem.cs
- WebPartsPersonalizationAuthorization.cs
- XmlStreamStore.cs
- TreeSet.cs