private void Update(object source) { if (_parentContext != null) { WeakEventManager.RemoveBindingContextListener(_parentContext, this); } if (source == null) { _parentContext = null; } else { _parentContext = GetParentBindingContext(source); if (_parentContext != null) { WeakEventManager.AddBindingContextListener(_parentContext, this, false); } } }