LayoutInformation.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 / Controls / Primitives / LayoutInformation.cs / 1305600 / LayoutInformation.cs

                            //------------------------------------------------------------------------------ 
//  Microsoft Avalon
//  Copyright (c) Microsoft Corporation, 2005
//
//  File: LayoutInformation 
//  Spec: http://team/sites/Avalon/Specs/LayoutInformation%20class.doc
//----------------------------------------------------------------------------- 
 
using System;
using System.Windows.Media; 
using System.Windows.Threading;

namespace System.Windows.Controls.Primitives
{ 
    /// 
    /// This interface exposes additional layout information not exposed otherwise on FrameworkElement. 
    /// This information is mostly used by the designer programs to produce additional visual clues for the user 
    /// during interactive editing of the elements and layout properties.
    ///  
    public static class LayoutInformation
    {
        private static void CheckArgument(FrameworkElement element)
        { 
            if (element == null)
            { 
                throw new ArgumentNullException("element"); 
            }
        } 

        /// 
        /// Returns the rectangle that represents Layout Slot - the layout partition reserved for the
        /// child by the layout parent. This info is in the coordinte system of the layout parent. 
        /// 
        public static Rect GetLayoutSlot(FrameworkElement element) 
        { 
            CheckArgument(element);
            return element.PreviousArrangeRect; 
        }

        /// 
        /// Returns a geometry which was computed by layout for the child. This is generally a visible region of the child. 
        /// Layout can compute automatic clip region when the child is larger then layout constraints or has ClipToBounds
        /// property set. Note that because of LayoutTransform, this could be a non-rectangular geometry. While general geometry is somewhat 
        /// complex to operate with, it is possible to check if the Geometry returned is RectangularGeometry or, if not - use Geometry.Bounds 
        /// property to get bounding box of the visible portion of the element.
        ///  
        public static Geometry GetLayoutClip(FrameworkElement element)
        {
            CheckArgument(element);
            return element.GetLayoutClipInternal(); 
        }
 
        ///  
        /// Returns a UIElement which was being processed by Layout Engine at the moment
        /// an unhandled exception casued Layout Engine to abandon the operation and unwind. 
        /// Returns non-null result only for a period of time before next layout update is
        /// initiated. Can be examined from the application exception handler.
        /// 
        /// The Dispatcher object that specifies the scope of operation. There is one Layout Engine per Dispatcher. 
        public static UIElement GetLayoutExceptionElement(Dispatcher dispatcher)
        { 
            if(dispatcher == null) 
                throw new ArgumentNullException("dispatcher");
 
            UIElement e = null;
            ContextLayoutManager lm = ContextLayoutManager.From(dispatcher);

            if(lm != null) 
                e = lm.GetLastExceptionElement();
 
            return e; 
        }
 

    }
}
 

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