DependencyPropertyKey.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Base / System / Windows / DependencyPropertyKey.cs / 1 / DependencyPropertyKey.cs

                            using System; 
using System.Diagnostics; // For Assert

namespace System.Windows
{ 
    /// 
    ///     Authorization key for access to read-only DependencyProperty. 
    /// Acquired via DependencyProperty.RegisterReadOnly/RegisterAttachedReadOnly 
    /// and used in DependencyObject.SetValue/ClearValue.
    ///  
    /// 
    ///     This object can have a transient state upon creation where the _dp
    /// field can be null until initialized.  However in use _dp needs to always
    /// be non-null.  Otherwise it is treated as a key that can't unlock anything. 
    /// (When needed, this property is available via the static constant NoAccess.
    ///  
    public sealed class DependencyPropertyKey 
    {
        ///  
        ///     The DependencyProperty associated with this access key.  This key
        /// does not authorize access to any other property.
        /// 
        public DependencyProperty DependencyProperty 
        {
            get 
            { 
                return _dp;
            } 
        }

        internal DependencyPropertyKey(DependencyProperty dp)
        { 
            _dp = dp;
        } 
 
        /// 
        ///     Override the metadata of a property that is already secured with 
        /// this key.
        /// 
        public void OverrideMetadata( Type forType, PropertyMetadata typeMetadata )
        { 
            if( _dp == null )
            { 
                throw new InvalidOperationException(); 
            }
 
            _dp.OverrideMetadata( forType, typeMetadata, this );
        }

        // This is not a property setter because we can't have a public 
        //  property getter and a internal property setter on the same property.
        internal void SetDependencyProperty(DependencyProperty dp) 
        { 
            Debug.Assert(_dp==null,"This should only be used when we need a placeholder and have a temporary value of null. It should not be used to change this property.");
            _dp = dp; 
        }

        private DependencyProperty _dp = null;
    } 
}
 

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