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
- PropertyGrid.cs
- Wildcard.cs
- DataGridViewColumnCollection.cs
- JoinQueryOperator.cs
- CodePageUtils.cs
- WebZoneDesigner.cs
- XsdDataContractExporter.cs
- CrossContextChannel.cs
- XPathNavigatorKeyComparer.cs
- IssuedSecurityTokenProvider.cs
- SourceFileBuildProvider.cs
- SpellerStatusTable.cs
- CaseInsensitiveHashCodeProvider.cs
- CodeCommentStatement.cs
- StrongNameKeyPair.cs
- WindowsSolidBrush.cs
- Substitution.cs
- WebPartDisplayMode.cs
- PropertyGeneratedEventArgs.cs
- DrawingContextWalker.cs
- EntityDescriptor.cs
- GenericWebPart.cs
- ConfigXmlSignificantWhitespace.cs
- WindowsListViewGroup.cs
- ActivityBindForm.Designer.cs
- _FtpDataStream.cs
- Dump.cs
- PointCollectionValueSerializer.cs
- MemberInfoSerializationHolder.cs
- SqlDataSourceView.cs
- MatrixValueSerializer.cs
- AstTree.cs
- TaskFileService.cs
- storepermission.cs
- DataContext.cs
- StylusEditingBehavior.cs
- UriPrefixTable.cs
- DropDownButton.cs
- HighlightComponent.cs
- RuntimeResourceSet.cs
- ConnectionsZoneDesigner.cs
- DataDocumentXPathNavigator.cs
- ConfigurationCollectionAttribute.cs
- LinkUtilities.cs
- Token.cs
- SolidColorBrush.cs
- OdbcReferenceCollection.cs
- ContentOperations.cs
- RowType.cs
- SecurityDocument.cs
- Attachment.cs
- SevenBitStream.cs
- PassportAuthentication.cs
- SchemaAttDef.cs
- FileDialogPermission.cs
- FileReservationCollection.cs
- DataSetFieldSchema.cs
- Exceptions.cs
- TraceXPathNavigator.cs
- SessionStateItemCollection.cs
- ObjectMemberMapping.cs
- MenuItemCollection.cs
- WebOperationContext.cs
- AppDomainProtocolHandler.cs
- SatelliteContractVersionAttribute.cs
- OdbcInfoMessageEvent.cs
- TypeCodeDomSerializer.cs
- FrameworkName.cs
- WindowsGraphicsWrapper.cs
- Formatter.cs
- FrameDimension.cs
- FormattedTextSymbols.cs
- RowUpdatingEventArgs.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- InvalidCastException.cs
- RoutedEventValueSerializer.cs
- DependencyPropertyHelper.cs
- SystemWebSectionGroup.cs
- TypedTableBase.cs
- StrongNameIdentityPermission.cs
- SecurityTimestamp.cs
- AudioFormatConverter.cs
- SpecularMaterial.cs
- LineSegment.cs
- TextServicesProperty.cs
- CommandTreeTypeHelper.cs
- LineServicesRun.cs
- BooleanToVisibilityConverter.cs
- ToolStripDropDownDesigner.cs
- WebRequestModuleElement.cs
- ToolStripMenuItem.cs
- COM2ExtendedBrowsingHandler.cs
- DoubleConverter.cs
- FlowNode.cs
- CodeNamespaceImport.cs
- PrintDialogException.cs
- DbReferenceCollection.cs
- DiscoveryEndpointElement.cs
- LogEntry.cs
- ClientRuntimeConfig.cs