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
- Range.cs
- AnnouncementEndpoint.cs
- SafeMILHandle.cs
- LicenseException.cs
- ClientProxyGenerator.cs
- Configuration.cs
- PropertyAccessVisitor.cs
- NamedPipeConnectionPoolSettingsElement.cs
- MLangCodePageEncoding.cs
- AutoResetEvent.cs
- TransformGroup.cs
- DesignerActionUIStateChangeEventArgs.cs
- SessionIDManager.cs
- AssemblySettingAttributes.cs
- ArithmeticException.cs
- TableRow.cs
- TempFiles.cs
- StringPropertyBuilder.cs
- LogConverter.cs
- CookieProtection.cs
- BehaviorEditorPart.cs
- WindowsFormsSectionHandler.cs
- FormsAuthenticationCredentials.cs
- SurrogateSelector.cs
- GridViewPageEventArgs.cs
- ReferenceConverter.cs
- EntityClientCacheKey.cs
- DetailsViewDeleteEventArgs.cs
- AdapterDictionary.cs
- DeviceFiltersSection.cs
- EntityDataSourceDesigner.cs
- FormsAuthenticationUser.cs
- RsaSecurityTokenParameters.cs
- XmlToDatasetMap.cs
- CorrelationActionMessageFilter.cs
- DataBoundControlDesigner.cs
- Padding.cs
- VisualTarget.cs
- XmlObjectSerializerReadContext.cs
- MembershipUser.cs
- CacheEntry.cs
- PropertyCollection.cs
- cookiecollection.cs
- ToolStripComboBox.cs
- AssemblySettingAttributes.cs
- DataGridViewTopLeftHeaderCell.cs
- Converter.cs
- TabletCollection.cs
- DesignerForm.cs
- WebPartUtil.cs
- MetadataItemCollectionFactory.cs
- ImageDrawing.cs
- TableAdapterManagerGenerator.cs
- FormsAuthenticationModule.cs
- XmlDocumentFragment.cs
- TextDecorationCollectionConverter.cs
- CodeAttributeArgumentCollection.cs
- DataGridViewRowHeightInfoPushedEventArgs.cs
- GenericUriParser.cs
- AccessDataSourceView.cs
- SplineQuaternionKeyFrame.cs
- RenderCapability.cs
- Debug.cs
- _SingleItemRequestCache.cs
- RenderDataDrawingContext.cs
- SerializableTypeCodeDomSerializer.cs
- WindowsButton.cs
- CollectionViewSource.cs
- PowerStatus.cs
- ProviderConnectionPointCollection.cs
- Timeline.cs
- InternalUserCancelledException.cs
- PropertyDescriptorComparer.cs
- IriParsingElement.cs
- CheckedListBox.cs
- EnumerableCollectionView.cs
- UpDownBase.cs
- Aggregates.cs
- GlobalItem.cs
- Line.cs
- BuildProviderCollection.cs
- SqlTriggerContext.cs
- SymbolEqualComparer.cs
- FileStream.cs
- ApplicationGesture.cs
- MsdtcWrapper.cs
- HttpFileCollection.cs
- DispatcherProcessingDisabled.cs
- XmlSchemaSimpleTypeList.cs
- DockPanel.cs
- StreamUpgradeProvider.cs
- Int32RectConverter.cs
- HebrewNumber.cs
- XmlSecureResolver.cs
- objectresult_tresulttype.cs
- InstallerTypeAttribute.cs
- DbTransaction.cs
- InternalEnumValidator.cs
- XmlText.cs
- SetUserLanguageRequest.cs