/// <summary> /// Will recursively notify all <see cref="SettingsNode"/> for a settings change. /// </summary> /// <param name="args"><see cref="SettingsChangedEventArgs"/> that contain information about the change.</param> protected internal void NotifyChange(SettingsChangedEventArgs args) { if (args == null) { throw new ArgumentNullException("args"); } args.OriginalSource = this; SettingsNode target = this; while (target != null && !target.IsInEditScope) { target.RaiseSettingsChanged(args); target = target.Parent; } if (target != null) { target.AccumulateChanges(); } }