File: src\Framework\System\Windows\Navigation\NavigationEventArgs.cs
Project: wpf\PresentationFramework.csproj (PresentationFramework)
//-------------------------------------------------------------------------------------------
// File: NavigationEventArgs.cs
//
// Copyright (C) 2004 by Microsoft Corporation.  All rights reserved.
// 
// Description:
//              This event is fired when a navigation is completed. 
//              This event is fired on INavigator and refired on the Application
// 
// History:
//  08/10/04: kusumav   Moved out of Application.cs to its own separate file.
//
//-------------------------------------------------------------------------------------------
 
using System.Net;
 
namespace System.Windows.Navigation
{
    /// <summary>
    /// Event args for non-cancelable navigation events - Navigated, LoadCompleted, NavigationStopped
    /// The NavigationEventArgs contain the uri or root element of the content being navigated to, 
    /// and a IsNavigationInitiator property that indicates whether this is a new navigation initiated 
    /// by this navigator, or whether this navigation is being propagated down from a higher level navigation 
    /// taking place in a containing window or frame. 
    /// The developer should check the IsNavigationInitiator property on the NavigationEventArgs to 
    /// determine whether to spin the globe. 
    /// </summary>
    public class NavigationEventArgs : EventArgs
    {
        // Internal constructor
        // <param name="uri">URI of the content navigated to.</param>
        // <param name="content">Root of the element tree being navigated to.</param>
        // <param name="isNavigationInitiator">Indicates whether this navigator is 
        //        initiating the navigation or whether a parent </param>
        internal NavigationEventArgs(Uri uri, Object content, Object extraData, WebResponse response, object Navigator, bool isNavigationInitiator)
        {
            _uri = uri;
            _content = content;
            _extraData = extraData;
            _webResponse = response;
            _isNavigationInitiator = isNavigationInitiator;
            _navigator = Navigator;
        }
 
        /// <summary>
        /// URI of the markup page navigated to.
        /// </summary>
        public Uri Uri
        {
            get
            {
                return _uri;
            }
        }
 
        /// <summary>
        /// Root of the element tree navigated to.
        /// Note: Only one of the Content or Uri property will be set, depending on whether the 
        /// navigation was to a Uri or an existing element tree.
        /// </summary>
        public Object Content
        {
            get
            {
                return _content;
            }
        }
 
        /// <summary>
        /// Indicates whether this navigator is initiating the navigation or whether a parent 
        /// navigator is being navigated (e.g., the current navigator is a frame 
        /// inside a page thats being navigated to inside a parent navigator). A developer 
        /// can use this property to determine whether to spin the globe on a Navigating event or 
        /// to stop spinning the globe on a LoadCompleted event. 
        /// If this property is False, the navigators parent navigator is also navigating and 
        /// the globe is already spinning. 
        /// If this property is True, the navigation was initiated inside the current frame and 
        /// the developer should spin the globe (or stop spinning the globe, depending on 
        /// which event is being handled.)
        /// </summary>
        public bool IsNavigationInitiator
        {
            get
            {
                return _isNavigationInitiator;
            }
        }
 
        /// <summary>
        /// Exposes extra data object which was optionally passed as a parameter to Navigate.
        /// </summary>
        public Object ExtraData
        {
            get
            {
                return _extraData;
            }
        }
 
        /// <summary>
        /// Exposes the web response to allow access to HTTP headers and other properties.
        /// </summary>
        public WebResponse WebResponse
        {
            get
            {
                return _webResponse;
            }
        }
 
        /// <summary>
        /// The navigator that raised this event
        /// </summary>
        public object Navigator
        {
            get
            {
                return _navigator;
            }
        }
 
        private Uri _uri;
        private Object _content;
        private Object _extraData;
        private WebResponse _webResponse;
        private bool _isNavigationInitiator;
        object _navigator;
    }
}