PropertyChangeTracker.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Base / MS / Internal / ComponentModel / PropertyChangeTracker.cs / 1 / PropertyChangeTracker.cs

                             
namespace MS.Internal.ComponentModel
{
    using System;
    using System.Collections.Generic; 
    using System.ComponentModel;
    using System.Diagnostics; 
    using System.Globalization; 
    using System.Reflection;
    using System.Security.Permissions; 
    using System.Windows;

    /// 
    ///     A change tracking expression that is used to raise property change events. 
    /// 
    internal class PropertyChangeTracker : Expression 
    { 
        internal PropertyChangeTracker(DependencyObject obj, DependencyProperty property)
            : base(ExpressionMode.NonSharable | ExpressionMode.ForwardsInvalidations) 
        {
            Debug.Assert(obj != null && property != null);
            _object = obj;
            _property = property; 
            ChangeSources(_object, _property, new DependencySource[] { new DependencySource(obj, property) });
        } 
 
        internal override void OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
        { 
            DependencyProperty dp = args.Property;
            if (_object == d && _property == dp && Changed != null)
            {
                Changed(_object, EventArgs.Empty); 
            }
        } 
 
        internal void Close()
        { 
            _object = null;
            _property = null;
            ChangeSources(null, null, null);
        } 

        internal bool CanClose 
        { 
            get { return Changed == null; }
        } 

        internal EventHandler Changed;

        private DependencyObject _object; 
        private DependencyProperty _property;
    } 
} 


// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
 
namespace MS.Internal.ComponentModel
{
    using System;
    using System.Collections.Generic; 
    using System.ComponentModel;
    using System.Diagnostics; 
    using System.Globalization; 
    using System.Reflection;
    using System.Security.Permissions; 
    using System.Windows;

    /// 
    ///     A change tracking expression that is used to raise property change events. 
    /// 
    internal class PropertyChangeTracker : Expression 
    { 
        internal PropertyChangeTracker(DependencyObject obj, DependencyProperty property)
            : base(ExpressionMode.NonSharable | ExpressionMode.ForwardsInvalidations) 
        {
            Debug.Assert(obj != null && property != null);
            _object = obj;
            _property = property; 
            ChangeSources(_object, _property, new DependencySource[] { new DependencySource(obj, property) });
        } 
 
        internal override void OnPropertyInvalidation(DependencyObject d, DependencyPropertyChangedEventArgs args)
        { 
            DependencyProperty dp = args.Property;
            if (_object == d && _property == dp && Changed != null)
            {
                Changed(_object, EventArgs.Empty); 
            }
        } 
 
        internal void Close()
        { 
            _object = null;
            _property = null;
            ChangeSources(null, null, null);
        } 

        internal bool CanClose 
        { 
            get { return Changed == null; }
        } 

        internal EventHandler Changed;

        private DependencyObject _object; 
        private DependencyProperty _property;
    } 
} 


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