protected override void OnAttached() { base.OnAttached(); DependencyObject associatedObject = base.AssociatedObject; Behavior behavior = associatedObject as Behavior; FrameworkElement frameworkElement = associatedObject as FrameworkElement; this.RegisterSourceChanged(); if (behavior != null) { associatedObject = ((IAttachedObject)behavior).AssociatedObject; behavior.AssociatedObjectChanged += new EventHandler(this.OnBehaviorHostChanged); } else if (this.SourceObject != null || frameworkElement == null) { try { this.OnSourceChanged(null, this.Source); } catch (InvalidOperationException invalidOperationException) { } } else { this.SourceNameResolver.NameScopeReferenceElement = frameworkElement; } if (string.Compare(this.GetEventName(), "Loaded", StringComparison.Ordinal) == 0 && frameworkElement != null && !Interaction.IsElementLoaded(frameworkElement)) { this.RegisterLoaded(frameworkElement); } }