GridViewItemAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Framework / System / Windows / Automation / Peers / GridViewItemAutomationPeer.cs / 1 / GridViewItemAutomationPeer.cs

                            using System; 
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security; 
using System.Text;
using System.Windows; 
using System.Windows.Automation; 
using System.Windows.Automation.Provider;
using System.Windows.Controls; 
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
using System.Windows.Media;
 
using MS.Internal;
using MS.Win32; 
 
namespace System.Windows.Automation.Peers
{ 
    ///
    public class GridViewItemAutomationPeer : ListBoxItemAutomationPeer
    {
        /// 
        public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP)
            : base(owner, listviewAP) 
        { 
            Invariant.Assert(owner != null);
            Invariant.Assert(listviewAP != null); 

            _item = owner;
            _listviewAP = listviewAP;
        } 

        /// 
        override protected string GetClassNameCore() 
        {
            return "ListViewItem"; 
        }

        ///
        override protected AutomationControlType GetAutomationControlTypeCore() 
        {
            return AutomationControlType.DataItem; 
        } 

        /// 
        protected override List GetChildrenCore()
        {
            ListView listview = _listviewAP.Owner as ListView;
            Invariant.Assert(listview != null); 

            ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem; 
            if (lvi != null) 
            {
                GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter; 
                if (rowPresenter != null)
                {
                    Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse
                    _dataChildren = new Hashtable(rowPresenter.ActualCells.Count); 

                    List list = new List(); 
                    int row = listview.Items.IndexOf(_item); 
                    int column = 0;
 
                    foreach (UIElement ele in rowPresenter.ActualCells)
                    {
                        GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]);
                        if (peer == null) 
                        {
                            if (ele is ContentPresenter) 
                            { 
                                peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP);
                            } 
                            else if (ele is TextBlock)
                            {
                                peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP);
                            } 
                            else
                            { 
                                Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock"); 
                            }
                        } 

                        //protection from indistinguishable UIElement - for example, 2 UIElement wiht same value
                        if (_dataChildren[ele] == null)
                        { 
                            //Set Cell's row and column
                            peer.Column = column; 
                            peer.Row = row; 
                            list.Add(peer);
                            _dataChildren.Add(ele, peer); 
                            column++;
                        }
                    }
                    return list; 
                }
            } 
 
            return null;
        } 

        #region Private Fields

        private object _item; 
        private ListViewAutomationPeer _listviewAP;
        private Hashtable _dataChildren = null; 
 
        #endregion
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
using System; 
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Security; 
using System.Text;
using System.Windows; 
using System.Windows.Automation; 
using System.Windows.Automation.Provider;
using System.Windows.Controls; 
using System.Windows.Controls.Primitives;
using System.Windows.Interop;
using System.Windows.Media;
 
using MS.Internal;
using MS.Win32; 
 
namespace System.Windows.Automation.Peers
{ 
    ///
    public class GridViewItemAutomationPeer : ListBoxItemAutomationPeer
    {
        /// 
        public GridViewItemAutomationPeer(object owner, ListViewAutomationPeer listviewAP)
            : base(owner, listviewAP) 
        { 
            Invariant.Assert(owner != null);
            Invariant.Assert(listviewAP != null); 

            _item = owner;
            _listviewAP = listviewAP;
        } 

        /// 
        override protected string GetClassNameCore() 
        {
            return "ListViewItem"; 
        }

        ///
        override protected AutomationControlType GetAutomationControlTypeCore() 
        {
            return AutomationControlType.DataItem; 
        } 

        /// 
        protected override List GetChildrenCore()
        {
            ListView listview = _listviewAP.Owner as ListView;
            Invariant.Assert(listview != null); 

            ListViewItem lvi = listview.ItemContainerGenerator.ContainerFromItem(_item) as ListViewItem; 
            if (lvi != null) 
            {
                GridViewRowPresenter rowPresenter = GridViewAutomationPeer.FindVisualByType(lvi, typeof(GridViewRowPresenter)) as GridViewRowPresenter; 
                if (rowPresenter != null)
                {
                    Hashtable oldChildren = _dataChildren; //cache the old ones for possible reuse
                    _dataChildren = new Hashtable(rowPresenter.ActualCells.Count); 

                    List list = new List(); 
                    int row = listview.Items.IndexOf(_item); 
                    int column = 0;
 
                    foreach (UIElement ele in rowPresenter.ActualCells)
                    {
                        GridViewCellAutomationPeer peer = (oldChildren == null ? null : (GridViewCellAutomationPeer)oldChildren[ele]);
                        if (peer == null) 
                        {
                            if (ele is ContentPresenter) 
                            { 
                                peer = new GridViewCellAutomationPeer((ContentPresenter)ele, _listviewAP);
                            } 
                            else if (ele is TextBlock)
                            {
                                peer = new GridViewCellAutomationPeer((TextBlock)ele, _listviewAP);
                            } 
                            else
                            { 
                                Invariant.Assert(false, "Children of GridViewRowPresenter should be ContentPresenter or TextBlock"); 
                            }
                        } 

                        //protection from indistinguishable UIElement - for example, 2 UIElement wiht same value
                        if (_dataChildren[ele] == null)
                        { 
                            //Set Cell's row and column
                            peer.Column = column; 
                            peer.Row = row; 
                            list.Add(peer);
                            _dataChildren.Add(ele, peer); 
                            column++;
                        }
                    }
                    return list; 
                }
            } 
 
            return null;
        } 

        #region Private Fields

        private object _item; 
        private ListViewAutomationPeer _listviewAP;
        private Hashtable _dataChildren = null; 
 
        #endregion
    } 
}

// 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