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
- EnumerableRowCollection.cs
- AdapterUtil.cs
- TabControlCancelEvent.cs
- ModulesEntry.cs
- Int32RectValueSerializer.cs
- _SslSessionsCache.cs
- DomNameTable.cs
- DbConnectionStringBuilder.cs
- UpdateManifestForBrowserApplication.cs
- KeyNameIdentifierClause.cs
- XmlBufferReader.cs
- BrowserCapabilitiesFactory35.cs
- StoryFragments.cs
- EndPoint.cs
- IndexerNameAttribute.cs
- SequenceDesignerAccessibleObject.cs
- CodeTypeParameterCollection.cs
- GeometryModel3D.cs
- BindingContext.cs
- OdbcParameterCollection.cs
- ScrollEvent.cs
- EventDescriptor.cs
- ClickablePoint.cs
- SelectionUIService.cs
- EventProviderWriter.cs
- SqlMethodCallConverter.cs
- OdbcConnectionHandle.cs
- Assert.cs
- Menu.cs
- HttpContextServiceHost.cs
- NetPeerTcpBinding.cs
- XmlSchemaSimpleTypeList.cs
- TableRowCollection.cs
- GeometryHitTestParameters.cs
- DataObjectPastingEventArgs.cs
- RuleSettingsCollection.cs
- DocumentGridPage.cs
- ToolStripContentPanel.cs
- MachineKeySection.cs
- FindCriteriaCD1.cs
- EncodingNLS.cs
- HyperlinkAutomationPeer.cs
- TraceListeners.cs
- DispatcherObject.cs
- SoapMessage.cs
- FileUtil.cs
- FixedLineResult.cs
- DataGridViewAutoSizeColumnsModeEventArgs.cs
- TypeDescriptor.cs
- DBCommandBuilder.cs
- XXXInfos.cs
- RowVisual.cs
- BuilderPropertyEntry.cs
- CodeObject.cs
- WindowsRegion.cs
- HtmlTextArea.cs
- COM2FontConverter.cs
- CompressStream.cs
- PropertyMetadata.cs
- NamespaceList.cs
- XmlHierarchicalEnumerable.cs
- WebPartPersonalization.cs
- TreeWalkHelper.cs
- ClosureBinding.cs
- FeedUtils.cs
- Matrix3D.cs
- PageClientProxyGenerator.cs
- CfgParser.cs
- ProfileSettings.cs
- WS2007FederationHttpBindingElement.cs
- Compensation.cs
- HwndSource.cs
- XamlTreeBuilder.cs
- RoutingSection.cs
- PostBackOptions.cs
- TableRow.cs
- TextDpi.cs
- InstanceNormalEvent.cs
- DesignerProperties.cs
- SecureUICommand.cs
- DataSourceExpression.cs
- HtmlInputControl.cs
- DataGridViewComboBoxColumn.cs
- GridItemPattern.cs
- WeakEventManager.cs
- FontFamilyConverter.cs
- PlatformNotSupportedException.cs
- EntityUtil.cs
- webclient.cs
- DocumentGridPage.cs
- MexBindingBindingCollectionElement.cs
- RequestCachePolicyConverter.cs
- Inline.cs
- ReadOnlyPropertyMetadata.cs
- StaticContext.cs
- NamedPipeConnectionPoolSettings.cs
- MSAAEventDispatcher.cs
- XmlWrappingReader.cs
- RectValueSerializer.cs
- OverloadGroupAttribute.cs