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
- DateTimeStorage.cs
- SelfIssuedAuthRSAPKCS1SignatureFormatter.cs
- ReturnEventArgs.cs
- MouseGestureValueSerializer.cs
- SymbolPair.cs
- StringValidatorAttribute.cs
- TypeDescriptorContext.cs
- IndentedWriter.cs
- Icon.cs
- WebServicesDescriptionAttribute.cs
- Menu.cs
- Listbox.cs
- ResolveMatchesMessageCD1.cs
- XmlQuerySequence.cs
- AutoGeneratedFieldProperties.cs
- Ref.cs
- ProcessThreadDesigner.cs
- ModifierKeysConverter.cs
- BinaryQueryOperator.cs
- DiagnosticsConfigurationHandler.cs
- SessionSwitchEventArgs.cs
- QuinticEase.cs
- GeneralTransform.cs
- SerializerWriterEventHandlers.cs
- InvalidCastException.cs
- DataServiceProviderMethods.cs
- WriteFileContext.cs
- RMEnrollmentPage3.cs
- PrimitiveType.cs
- UnsafeNativeMethods.cs
- ConfigurationManagerInternalFactory.cs
- TogglePatternIdentifiers.cs
- StateManagedCollection.cs
- InputDevice.cs
- ProxyWebPartManager.cs
- CacheDependency.cs
- ToolBarButtonClickEvent.cs
- ErrorHandler.cs
- PersonalizablePropertyEntry.cs
- StringToken.cs
- GeometryGroup.cs
- ObjectListField.cs
- PointAnimation.cs
- RegistryPermission.cs
- AuthenticationConfig.cs
- StringSource.cs
- BindingCollection.cs
- DependsOnAttribute.cs
- TypeBuilderInstantiation.cs
- ProcessModelInfo.cs
- WSSecureConversation.cs
- WebServiceFaultDesigner.cs
- DataGridViewCell.cs
- DrawListViewColumnHeaderEventArgs.cs
- RbTree.cs
- SimpleTypesSurrogate.cs
- LoadedOrUnloadedOperation.cs
- SamlNameIdentifierClaimResource.cs
- WorkflowLayouts.cs
- PolyLineSegmentFigureLogic.cs
- SchemaElementLookUpTableEnumerator.cs
- EpmCustomContentWriterNodeData.cs
- AsyncSerializedWorker.cs
- MethodBody.cs
- SmiRequestExecutor.cs
- FormsAuthenticationUser.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- TemplateInstanceAttribute.cs
- CodeDirectiveCollection.cs
- AspNetHostingPermission.cs
- DesignerToolStripControlHost.cs
- ControlUtil.cs
- StructuredProperty.cs
- StringFormat.cs
- Command.cs
- WindowsPen.cs
- UserControlParser.cs
- DataListDesigner.cs
- WorkflowRuntimeServiceElement.cs
- RotationValidation.cs
- ExpressionBuilder.cs
- TextDecorationCollection.cs
- MetabaseServerConfig.cs
- AttributeCollection.cs
- XmlIgnoreAttribute.cs
- SpellerStatusTable.cs
- NeutralResourcesLanguageAttribute.cs
- FileClassifier.cs
- TableDetailsCollection.cs
- PropertyGridDesigner.cs
- InvalidProgramException.cs
- DomainUpDown.cs
- Merger.cs
- DatagridviewDisplayedBandsData.cs
- HandlerWithFactory.cs
- DependencyPropertyAttribute.cs
- PrefixQName.cs
- SharedPersonalizationStateInfo.cs
- TextRunCache.cs
- SchemaLookupTable.cs