ExpanderAutomationPeer.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / ExpanderAutomationPeer.cs / 1305600 / ExpanderAutomationPeer.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.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 ExpanderAutomationPeer : FrameworkElementAutomationPeer, IExpandCollapseProvider
    {
        ///
        public ExpanderAutomationPeer(Expander owner): base(owner) 
        {}
 
        /// 
        override protected string GetClassNameCore()
        { 
            return "Expander";
        }

        /// 
        override protected AutomationControlType GetAutomationControlTypeCore()
        { 
            return AutomationControlType.Group; 
        }
 
        ///
        override public object GetPattern(PatternInterface pattern)
        {
            object iface = null; 

            if(pattern == PatternInterface.ExpandCollapse) 
            { 
                iface = this;
            } 
            else
            {
                iface = base.GetPattern(pattern);
            } 

            return iface; 
        } 

        #region ExpandCollapse 

        /// 
        /// Blocking method that returns after the element has been expanded.
        ///  
        /// true if the node was successfully expanded
        void IExpandCollapseProvider.Expand() 
        { 
            if (!IsEnabled())
                throw new ElementNotEnabledException(); 

            Expander owner = (Expander)((ExpanderAutomationPeer)this).Owner;
            owner.IsExpanded = true;
        } 

        ///  
        /// Blocking method that returns after the element has been collapsed. 
        /// 
        /// true if the node was successfully collapsed 
        void IExpandCollapseProvider.Collapse()
        {
            if (!IsEnabled())
                throw new ElementNotEnabledException(); 

            Expander owner = (Expander)((ExpanderAutomationPeer)this).Owner; 
            owner.IsExpanded = false; 
        }
 
        ///indicates an element's current Collapsed or Expanded state
        ExpandCollapseState IExpandCollapseProvider.ExpandCollapseState
        {
            get 
            {
                Expander owner = (Expander)((ExpanderAutomationPeer)this).Owner; 
                return owner.IsExpanded ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed; 
            }
        } 

        //
        [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.NoInlining)]
        internal void RaiseExpandCollapseAutomationEvent(bool oldValue, bool newValue) 
        {
            RaisePropertyChangedEvent( 
                ExpandCollapsePatternIdentifiers.ExpandCollapseStateProperty, 
                oldValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed,
                newValue ? ExpandCollapseState.Expanded : ExpandCollapseState.Collapsed); 
        }

        #endregion ExpandCollapse
    } 
}
 
 

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