Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ArraySubsetEnumerator.cs
- XmlCharacterData.cs
- SafeArrayTypeMismatchException.cs
- PDBReader.cs
- MdiWindowListStrip.cs
- mansign.cs
- CompilationRelaxations.cs
- AdapterUtil.cs
- ContextItem.cs
- ConfigurationException.cs
- SimpleMailWebEventProvider.cs
- BindingExpression.cs
- MenuItem.cs
- TableLayout.cs
- ParameterBinding.cs
- LayoutTable.cs
- Utility.cs
- EndpointDiscoveryMetadata.cs
- ClientConvert.cs
- WebColorConverter.cs
- InvalidProgramException.cs
- AutomationPatternInfo.cs
- HierarchicalDataBoundControl.cs
- LinkClickEvent.cs
- AstTree.cs
- WorkflowLayouts.cs
- LinkArea.cs
- BypassElementCollection.cs
- ServiceModelDictionary.cs
- RawStylusInputCustomDataList.cs
- DataListItem.cs
- BitmapEffectGroup.cs
- ColorConvertedBitmap.cs
- NotFiniteNumberException.cs
- MexHttpBindingElement.cs
- Win32PrintDialog.cs
- DataObjectEventArgs.cs
- HwndSubclass.cs
- VSWCFServiceContractGenerator.cs
- DayRenderEvent.cs
- DocumentViewerHelper.cs
- PolicyException.cs
- HMAC.cs
- GuidelineSet.cs
- WebEventTraceProvider.cs
- MsmqInputSessionChannel.cs
- GregorianCalendar.cs
- UnsafeNativeMethods.cs
- TextSimpleMarkerProperties.cs
- CodeStatementCollection.cs
- DrawingAttributesDefaultValueFactory.cs
- GenerateTemporaryTargetAssembly.cs
- ConfigurationValidatorAttribute.cs
- COM2FontConverter.cs
- StructuralObject.cs
- WindowsListViewSubItem.cs
- BatchParser.cs
- ChangePassword.cs
- SByte.cs
- SponsorHelper.cs
- DataGrid.cs
- IntSecurity.cs
- NativeMethods.cs
- Currency.cs
- RelativeSource.cs
- AccessText.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- RequestCacheManager.cs
- SubclassTypeValidator.cs
- NotSupportedException.cs
- MetadataAssemblyHelper.cs
- EntityCommand.cs
- LinqDataSourceInsertEventArgs.cs
- NativeMethods.cs
- CacheModeConverter.cs
- ScopelessEnumAttribute.cs
- KeyEventArgs.cs
- WrappedIUnknown.cs
- Stack.cs
- Socket.cs
- LineMetrics.cs
- SafeFileHandle.cs
- DataGridHeaderBorder.cs
- Selection.cs
- NativeMethods.cs
- CodePrimitiveExpression.cs
- ValidatorUtils.cs
- HMAC.cs
- Attributes.cs
- BatchParser.cs
- StatusBarPanelClickEvent.cs
- RuntimeHelpers.cs
- RecordBuilder.cs
- Int32Storage.cs
- JsonQNameDataContract.cs
- DbProviderFactory.cs
- EastAsianLunisolarCalendar.cs
- CryptoProvider.cs
- ZipIOBlockManager.cs
- RenderCapability.cs