DocumentPageHost.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / MS / Internal / documents / DocumentPageHost.cs / 1 / DocumentPageHost.cs

                            //---------------------------------------------------------------------------- 
//
// Copyright (C) Microsoft Corporation.  All rights reserved.
//
// File: DocumentPageHost.cs 
//
// Description: Provides a view port for a page of content for a DocumentPage. 
// 
//---------------------------------------------------------------------------
using System; 
using System.Windows;           // UIElement
using System.Windows.Media;     // Visual

namespace MS.Internal.Documents 
{
    ///  
    /// Provides a view port for a page of content for a DocumentPage. 
    /// 
    internal class DocumentPageHost : FrameworkElement 
    {
        //-------------------------------------------------------------------
        //
        //  Constructors 
        //
        //------------------------------------------------------------------- 
 
        #region Constructors
 
        /// 
        /// Create an instance of a DocumentPageHost.
        /// 
        internal DocumentPageHost() 
            : base()
        { 
        } 

        #endregion Constructors 

        //--------------------------------------------------------------------
        //
        //  Internal Methods 
        //
        //------------------------------------------------------------------- 
 
        #region Internal Methods
 
        internal static void DisconnectPageVisual(Visual pageVisual)
        {
            // There might be a case where a visual associated with a page was
            // inserted to a visual tree before. It got removed later, but GC did not 
            // destroy its parent yet. To workaround this case always check for the parent
            // of page visual and disconnect it, when necessary. 
            Visual currentParent = VisualTreeHelper.GetParent(pageVisual) as Visual; 
            if (currentParent != null)
            { 
                ContainerVisual pageVisualHost = currentParent as ContainerVisual;
                if (pageVisualHost == null)
                    throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
                DocumentPageHost docPageHost = VisualTreeHelper.GetParent(pageVisualHost) as DocumentPageHost; 
                if (docPageHost == null)
                    throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual"); 
                docPageHost.PageVisual = null; 
            }
        } 

        #endregion Internal Methods

        //-------------------------------------------------------------------- 
        //
        //  Internal Properties 
        // 
        //--------------------------------------------------------------------
 
        #region Internal Properties

        /// 
        /// Root of visual subtree hosted by this DocumentPageHost. 
        /// 
        internal Visual PageVisual 
        { 
            get
            { 
                return _pageVisual;
            }
            set
            { 
                ContainerVisual pageVisualHost;
                if (_pageVisual != null) 
                { 
                    pageVisualHost = VisualTreeHelper.GetParent(_pageVisual) as ContainerVisual;
                    Invariant.Assert(pageVisualHost != null); 
                    pageVisualHost.Children.Clear();
                    this.RemoveVisualChild(pageVisualHost);
                }
                _pageVisual = value; 
                if (_pageVisual != null)
                { 
                    pageVisualHost = new ContainerVisual(); 
                    this.AddVisualChild(pageVisualHost);
                    pageVisualHost.Children.Add(_pageVisual); 
                    pageVisualHost.SetValue(FlowDirectionProperty, FlowDirection.LeftToRight);
                }
            }
        } 

        ///  
        /// Internal cached offset. 
        /// 
        internal Point CachedOffset; 

        #endregion Internal Properties

        #region VisualChildren 
        /// 
        ///   Derived class must implement to support Visual children. The method must return 
        ///    the child at the specified index. Index must be between 0 and GetVisualChildrenCount-1. 
        ///
        ///    By default a Visual does not have any children. 
        ///
        ///  Remark:
        ///       During this virtual call it is not valid to modify the Visual tree.
        ///  
        protected override Visual GetVisualChild(int index)
        { 
            if (index != 0 || _pageVisual == null) 
            {
                throw new ArgumentOutOfRangeException("index", index, SR.Get(SRID.Visual_ArgumentOutOfRange)); 
            }
            return VisualTreeHelper.GetParent(_pageVisual) as Visual;
        }
 
        /// 
        ///  Derived classes override this property to enable the Visual code to enumerate 
        ///  the Visual children. Derived classes need to return the number of children 
        ///  from this method.
        /// 
        ///    By default a Visual does not have any children.
        ///
        ///  Remark: During this virtual method the Visual tree must not be modified.
        ///  
        protected override int VisualChildrenCount
        { 
            get { return _pageVisual != null ? 1 : 0; } 
        }
 
        #endregion VisualChildren

        private Visual _pageVisual;
    } 
}
 
 


// 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.
//
// File: DocumentPageHost.cs 
//
// Description: Provides a view port for a page of content for a DocumentPage. 
// 
//---------------------------------------------------------------------------
using System; 
using System.Windows;           // UIElement
using System.Windows.Media;     // Visual

namespace MS.Internal.Documents 
{
    ///  
    /// Provides a view port for a page of content for a DocumentPage. 
    /// 
    internal class DocumentPageHost : FrameworkElement 
    {
        //-------------------------------------------------------------------
        //
        //  Constructors 
        //
        //------------------------------------------------------------------- 
 
        #region Constructors
 
        /// 
        /// Create an instance of a DocumentPageHost.
        /// 
        internal DocumentPageHost() 
            : base()
        { 
        } 

        #endregion Constructors 

        //--------------------------------------------------------------------
        //
        //  Internal Methods 
        //
        //------------------------------------------------------------------- 
 
        #region Internal Methods
 
        internal static void DisconnectPageVisual(Visual pageVisual)
        {
            // There might be a case where a visual associated with a page was
            // inserted to a visual tree before. It got removed later, but GC did not 
            // destroy its parent yet. To workaround this case always check for the parent
            // of page visual and disconnect it, when necessary. 
            Visual currentParent = VisualTreeHelper.GetParent(pageVisual) as Visual; 
            if (currentParent != null)
            { 
                ContainerVisual pageVisualHost = currentParent as ContainerVisual;
                if (pageVisualHost == null)
                    throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual");
                DocumentPageHost docPageHost = VisualTreeHelper.GetParent(pageVisualHost) as DocumentPageHost; 
                if (docPageHost == null)
                    throw new ArgumentException(SR.Get(SRID.DocumentPageView_ParentNotDocumentPageHost), "pageVisual"); 
                docPageHost.PageVisual = null; 
            }
        } 

        #endregion Internal Methods

        //-------------------------------------------------------------------- 
        //
        //  Internal Properties 
        // 
        //--------------------------------------------------------------------
 
        #region Internal Properties

        /// 
        /// Root of visual subtree hosted by this DocumentPageHost. 
        /// 
        internal Visual PageVisual 
        { 
            get
            { 
                return _pageVisual;
            }
            set
            { 
                ContainerVisual pageVisualHost;
                if (_pageVisual != null) 
                { 
                    pageVisualHost = VisualTreeHelper.GetParent(_pageVisual) as ContainerVisual;
                    Invariant.Assert(pageVisualHost != null); 
                    pageVisualHost.Children.Clear();
                    this.RemoveVisualChild(pageVisualHost);
                }
                _pageVisual = value; 
                if (_pageVisual != null)
                { 
                    pageVisualHost = new ContainerVisual(); 
                    this.AddVisualChild(pageVisualHost);
                    pageVisualHost.Children.Add(_pageVisual); 
                    pageVisualHost.SetValue(FlowDirectionProperty, FlowDirection.LeftToRight);
                }
            }
        } 

        ///  
        /// Internal cached offset. 
        /// 
        internal Point CachedOffset; 

        #endregion Internal Properties

        #region VisualChildren 
        /// 
        ///   Derived class must implement to support Visual children. The method must return 
        ///    the child at the specified index. Index must be between 0 and GetVisualChildrenCount-1. 
        ///
        ///    By default a Visual does not have any children. 
        ///
        ///  Remark:
        ///       During this virtual call it is not valid to modify the Visual tree.
        ///  
        protected override Visual GetVisualChild(int index)
        { 
            if (index != 0 || _pageVisual == null) 
            {
                throw new ArgumentOutOfRangeException("index", index, SR.Get(SRID.Visual_ArgumentOutOfRange)); 
            }
            return VisualTreeHelper.GetParent(_pageVisual) as Visual;
        }
 
        /// 
        ///  Derived classes override this property to enable the Visual code to enumerate 
        ///  the Visual children. Derived classes need to return the number of children 
        ///  from this method.
        /// 
        ///    By default a Visual does not have any children.
        ///
        ///  Remark: During this virtual method the Visual tree must not be modified.
        ///  
        protected override int VisualChildrenCount
        { 
            get { return _pageVisual != null ? 1 : 0; } 
        }
 
        #endregion VisualChildren

        private Visual _pageVisual;
    } 
}
 
 


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