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
- AttributeCollection.cs
- MruCache.cs
- ClientBuildManager.cs
- MenuAutomationPeer.cs
- TargetParameterCountException.cs
- EndpointDiscoveryMetadataCD1.cs
- EntityDataSourceView.cs
- MouseGestureConverter.cs
- XmlChoiceIdentifierAttribute.cs
- _RegBlobWebProxyDataBuilder.cs
- RegexMatchCollection.cs
- OrthographicCamera.cs
- MultiSelectRootGridEntry.cs
- ListControl.cs
- DataSetSchema.cs
- CustomLineCap.cs
- CultureInfo.cs
- TextWriter.cs
- ConnectionConsumerAttribute.cs
- WriterOutput.cs
- AccessedThroughPropertyAttribute.cs
- SymLanguageType.cs
- OleTxTransactionInfo.cs
- DecimalConstantAttribute.cs
- CommandEventArgs.cs
- DoubleAnimationBase.cs
- DataBindingHandlerAttribute.cs
- ErrorStyle.cs
- CompletedAsyncResult.cs
- WinFormsSpinner.cs
- Label.cs
- NavigationProgressEventArgs.cs
- ToolStrip.cs
- ErrorRuntimeConfig.cs
- SqlClientMetaDataCollectionNames.cs
- LambdaCompiler.Binary.cs
- WebBodyFormatMessageProperty.cs
- ExceptionUtil.cs
- PassportAuthentication.cs
- DefaultValueConverter.cs
- StylusEventArgs.cs
- DiagnosticStrings.cs
- PrefixQName.cs
- SpeechDetectedEventArgs.cs
- Material.cs
- SqlExpressionNullability.cs
- ConnectionProviderAttribute.cs
- RegexCompilationInfo.cs
- ExpressionSelection.cs
- UriParserTemplates.cs
- DataBinding.cs
- MissingManifestResourceException.cs
- TimeoutHelper.cs
- TagMapInfo.cs
- RIPEMD160Managed.cs
- BinaryObjectInfo.cs
- ToolBarOverflowPanel.cs
- ReflectionUtil.cs
- OleDbEnumerator.cs
- WebPartTransformerCollection.cs
- DataObjectSettingDataEventArgs.cs
- ButtonField.cs
- DataListItemEventArgs.cs
- MarshalByRefObject.cs
- mediaeventshelper.cs
- UserPreferenceChangingEventArgs.cs
- HighlightVisual.cs
- JavaScriptString.cs
- CodeDomDesignerLoader.cs
- StringConverter.cs
- AddInAdapter.cs
- SessionStateSection.cs
- DetailsViewDesigner.cs
- CommonDialog.cs
- VerificationAttribute.cs
- XmlTextWriter.cs
- ComboBoxAutomationPeer.cs
- Mouse.cs
- ColumnMapVisitor.cs
- CodeObject.cs
- ChangeBlockUndoRecord.cs
- Decoder.cs
- validationstate.cs
- HtmlFormParameterReader.cs
- WindowPattern.cs
- StaticContext.cs
- PersonalizationProvider.cs
- GeometryCollection.cs
- TextTreeExtractElementUndoUnit.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- PeerInvitationResponse.cs
- ManagedIStream.cs
- ServiceProviders.cs
- SqlCacheDependencySection.cs
- glyphs.cs
- CngKeyBlobFormat.cs
- ConfigurationConverterBase.cs
- SelectManyQueryOperator.cs
- DataPagerFieldItem.cs
- NativeMethods.cs