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
- NegotiateStream.cs
- RecommendedAsConfigurableAttribute.cs
- SQLBinary.cs
- WindowsToolbarAsMenu.cs
- EditCommandColumn.cs
- ExtendedProperty.cs
- PerformanceCounterPermissionAttribute.cs
- PrintingPermission.cs
- SharedPerformanceCounter.cs
- OrthographicCamera.cs
- Helper.cs
- DataServiceQueryContinuation.cs
- CellParaClient.cs
- ConstructorExpr.cs
- Mappings.cs
- DbConnectionStringCommon.cs
- FormsAuthenticationUser.cs
- SettingsAttributeDictionary.cs
- ListView.cs
- InputBuffer.cs
- CriticalHandle.cs
- StrokeNodeEnumerator.cs
- WebFaultException.cs
- ErrorProvider.cs
- RepeaterItemEventArgs.cs
- PermissionSetEnumerator.cs
- LogicalExpressionEditor.cs
- ComPlusDiagnosticTraceRecords.cs
- DataGridViewCellErrorTextNeededEventArgs.cs
- PagedDataSource.cs
- ScriptingJsonSerializationSection.cs
- FixedHyperLink.cs
- FlowDocumentReaderAutomationPeer.cs
- BitmapSourceSafeMILHandle.cs
- DurationConverter.cs
- SimpleNameService.cs
- GeneralTransform3D.cs
- UiaCoreApi.cs
- DataGridViewBand.cs
- InitializationEventAttribute.cs
- StreamWriter.cs
- BaseValidator.cs
- Sentence.cs
- ConvertersCollection.cs
- MSHTMLHost.cs
- WindowsUpDown.cs
- DesignerActionVerbItem.cs
- Margins.cs
- Processor.cs
- DataGridColumnCollection.cs
- WindowsMenu.cs
- XmlILTrace.cs
- NamedObject.cs
- SpotLight.cs
- AddInPipelineAttributes.cs
- SoapProcessingBehavior.cs
- backend.cs
- PagerSettings.cs
- StreamReader.cs
- ContextStack.cs
- IndexingContentUnit.cs
- DataSourceGroupCollection.cs
- SubMenuStyleCollection.cs
- RelationshipManager.cs
- EntityFrameworkVersions.cs
- TrustLevel.cs
- EdmItemCollection.OcAssemblyCache.cs
- SerializationSectionGroup.cs
- DataKeyCollection.cs
- EncryptedHeader.cs
- Vector3DAnimationBase.cs
- ProxyAssemblyNotLoadedException.cs
- DataGridViewCellStyleChangedEventArgs.cs
- HttpContextBase.cs
- MobileResource.cs
- Unit.cs
- AddressingProperty.cs
- RegistryPermission.cs
- MSG.cs
- DispatchChannelSink.cs
- DataSourceSelectArguments.cs
- EpmSyndicationContentDeSerializer.cs
- BigInt.cs
- WebScriptServiceHostFactory.cs
- TextClipboardData.cs
- OLEDB_Util.cs
- RemoteWebConfigurationHostServer.cs
- SmiGettersStream.cs
- SubqueryRules.cs
- PositiveTimeSpanValidator.cs
- Serializer.cs
- ResolveNameEventArgs.cs
- ObjectHandle.cs
- ItemsPanelTemplate.cs
- WhitespaceRuleReader.cs
- RealizationContext.cs
- MetabaseReader.cs
- ContainerCodeDomSerializer.cs
- FormsAuthenticationConfiguration.cs
- JsonReaderDelegator.cs