/*
         * //internal string TraceContext
         * //{
         * //    get
         * //    {
         * //        if (this.traceContext == null)
         * //        {
         * //            if (this.expression == null)
         * //            {
         * //                this.traceContext = "";
         * //            }
         * //            else
         * //            {
         * //                this.traceContext = this.expression.GetExpressionTraceString();
         * //            }
         * //        }
         * //        return this.traceContext;
         * //    }
         * //}
         */

        internal void Disconnect()
        {
            for (PropertyPathStep i = this.first; i != null; i = i.NextStep)
            {
                i.Disconnect();
            }
        }
 internal void ReConnect(object source)
 {
     for (PropertyPathStep i = this.first; i != null; i = i.NextStep)
     {
         i.ReConnect(source);
         source = i.Value;
     }
 }
        internal void RaisePropertyPathStepChanged(PropertyPathStep source)
        {
            PropertyPathStep nextStep = source.NextStep;
            object           value    = source.Value;

            while (nextStep != null)
            {
                nextStep.ReConnect(value);
                value    = nextStep.Value;
                nextStep = nextStep.NextStep;
            }
            if (this.PropertyPathChanged != null)
            {
                this.PropertyPathChanged(this, new PropertyPathChangedEventArgs(source));
            }
        }
        private void ConnectToSource(PropertyPath path, object source, bool listenToChanges)
        {
            this.source = source;
            PropertyPathStep propertyPathStep = null;
            object           value            = source;
            int i = 1;
            PropertyPathStep propertyPathStep2 = path.Descriptors[0].CreateStep(this, value, listenToChanges);

            this.first       = propertyPathStep2;
            propertyPathStep = propertyPathStep2;
            value            = propertyPathStep.Value;
            for (i = 1; i < path.Descriptors.Count; i++)
            {
                propertyPathStep           = path.Descriptors[i].CreateStep(this, value, listenToChanges);
                propertyPathStep2.NextStep = propertyPathStep;
                propertyPathStep2          = propertyPathStep;
                value = propertyPathStep.Value;
            }
            this.last = propertyPathStep;
        }
 private void ConnectToSource(PropertyPath path, object source, bool listenToChanges)
 {
     this.source = source;
     PropertyPathStep propertyPathStep = null;
     object value = source;
     int i = 1;
     PropertyPathStep propertyPathStep2 = path.Descriptors[0].CreateStep(this, value, listenToChanges);
     this.first = propertyPathStep2;
     propertyPathStep = propertyPathStep2;
     value = propertyPathStep.Value;
     for (i = 1; i < path.Descriptors.Count; i++)
     {
         propertyPathStep = path.Descriptors[i].CreateStep(this, value, listenToChanges);
         propertyPathStep2.NextStep = propertyPathStep;
         propertyPathStep2 = propertyPathStep;
         value = propertyPathStep.Value;
     }
     this.last = propertyPathStep;
 }
 internal void RaisePropertyPathStepChanged(PropertyPathStep source)
 {
     PropertyPathStep nextStep = source.NextStep;
     object value = source.Value;
     while (nextStep != null)
     {
         nextStep.ReConnect(value);
         value = nextStep.Value;
         nextStep = nextStep.NextStep;
     }
     if (this.PropertyPathChanged != null)
     {
         this.PropertyPathChanged(this, new PropertyPathChangedEventArgs(source));
     }
 }
 internal PropertyPathChangedEventArgs(PropertyPathStep source)
 {
     this.ChangedPart = source;
 }
 internal PropertyPathChangedEventArgs(PropertyPathStep source)
 {
     this.ChangedPart = source;
 }