SelectiveScrollingGrid.cs source code in C# .NET

Source code for the .NET framework in C#

                        

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

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK