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
- Stack.cs
- HostExecutionContextManager.cs
- ListMarkerLine.cs
- WorkflowDispatchContext.cs
- mda.cs
- CodePageEncoding.cs
- RecipientInfo.cs
- HttpBindingExtension.cs
- ConnectionInterfaceCollection.cs
- TraceListeners.cs
- RequestCacheManager.cs
- MethodCallExpression.cs
- ManagedWndProcTracker.cs
- DodSequenceMerge.cs
- ChooseAction.cs
- CryptoConfig.cs
- RoutedEventConverter.cs
- CaseStatement.cs
- OutgoingWebResponseContext.cs
- FrameworkElement.cs
- FlagsAttribute.cs
- StringInfo.cs
- WindowsNonControl.cs
- CreateParams.cs
- InputDevice.cs
- PasswordTextContainer.cs
- RoutedEvent.cs
- Geometry.cs
- RadioButton.cs
- SingleBodyParameterMessageFormatter.cs
- HGlobalSafeHandle.cs
- DecoderReplacementFallback.cs
- Vertex.cs
- MatrixIndependentAnimationStorage.cs
- SplineKeyFrames.cs
- Renderer.cs
- QuaternionConverter.cs
- WebPartTracker.cs
- TextEncodedRawTextWriter.cs
- PageClientProxyGenerator.cs
- BitVec.cs
- ActivityWithResult.cs
- QilParameter.cs
- HttpFileCollectionWrapper.cs
- ConditionalAttribute.cs
- RowToFieldTransformer.cs
- XmlnsPrefixAttribute.cs
- SrgsRulesCollection.cs
- Bind.cs
- TypeBuilderInstantiation.cs
- OperationPerformanceCounters.cs
- SoapException.cs
- DataGridViewAutoSizeModeEventArgs.cs
- ArrayExtension.cs
- Literal.cs
- PerformanceCounterLib.cs
- BasicHttpSecurityMode.cs
- XXXInfos.cs
- XmlRawWriter.cs
- FilterException.cs
- odbcmetadatafactory.cs
- ZoneMembershipCondition.cs
- XmlNavigatorStack.cs
- SessionParameter.cs
- LinkTarget.cs
- SqlCacheDependencyDatabase.cs
- StringResourceManager.cs
- PixelFormats.cs
- ListArgumentProvider.cs
- OdbcDataReader.cs
- Membership.cs
- TypeBrowser.xaml.cs
- CompilerTypeWithParams.cs
- TemplateControl.cs
- ControlHelper.cs
- ObjectRef.cs
- DataView.cs
- BaseDataListComponentEditor.cs
- Stack.cs
- FontClient.cs
- QueryResultOp.cs
- TimeoutException.cs
- MessageBox.cs
- NTAccount.cs
- Compilation.cs
- RubberbandSelector.cs
- BadImageFormatException.cs
- SiblingIterators.cs
- Margins.cs
- GroupQuery.cs
- EntityDataSourceValidationException.cs
- ComponentResourceKeyConverter.cs
- UserControlAutomationPeer.cs
- SerialReceived.cs
- Label.cs
- storepermissionattribute.cs
- MetaModel.cs
- AlternateView.cs
- NameValueSectionHandler.cs
- PackageRelationshipSelector.cs