/// <summary>
        /// Notifies that the property path has changed.
        /// </summary>
        /// <param name="e">The <see cref="PropertyPathObserverChangedEventArgs"/> instance containing the event data.</param>
        public void NotifyPropertyPathChanged(PropertyPathObserverChangedEventArgs e)
        {
            if (this.Parent == null)
            {
                var handler = this.PropertyPathChanged;

                if (handler == null)
                    return;

                handler(this, e);
            }
            else
            {
                this.Parent.NotifyPropertyPathChanged(e);
            }
        }
        private void ObservableObject_PropertyChanged(object sender, PropertyChangedEventArgs e)
        {
            if (this.PropertyName != e.PropertyName && !string.IsNullOrWhiteSpace(e.PropertyName))
                return;

            this.UpdatePropertyValue();

            if (this.Child == null)
            {
                var ce = new PropertyPathObserverChangedEventArgs(this.PropertyName, this.PropertyValue);
                this.NotifyPropertyPathChanged(ce);
            }
        }
 private void Observer_PropertyPathChanged(object sender, PropertyPathObserverChangedEventArgs e)
 {
     foreach (var action in Actions)
         action(e);
 }