/// <summary> /// Gets the associated with a specified object. /// </summary> /// <param name="obj">The object from which to retrieve the <see cref="T:System.Windows.Interactivity.BehaviorCollection" />.</param> /// <returns>A <see cref="T:System.Windows.Interactivity.BehaviorCollection" /> containing the behaviors associated with the specified object.</returns> public static BehaviorCollection GetBehaviors(DependencyObject obj) { BehaviorCollection behaviorCollection = (BehaviorCollection)obj.GetValue(Interaction.BehaviorsProperty); if (behaviorCollection == null) { behaviorCollection = new BehaviorCollection(); obj.SetValue(Interaction.BehaviorsProperty, behaviorCollection); } return(behaviorCollection); }
/// <exception cref="T:System.InvalidOperationException">Cannot host the same BehaviorCollection on more than one object at a time.</exception> private static void OnBehaviorsChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args) { BehaviorCollection behaviorCollection = (BehaviorCollection)args.OldValue; BehaviorCollection behaviorCollection2 = (BehaviorCollection)args.NewValue; if (behaviorCollection != behaviorCollection2) { if (behaviorCollection != null && ((IAttachedObject)behaviorCollection).AssociatedObject != null) { behaviorCollection.Detach(); } if (behaviorCollection2 != null && obj != null) { if (((IAttachedObject)behaviorCollection2).AssociatedObject != null) { throw new InvalidOperationException("Cannot set the same BehaviorCollection on multiple objects."); } behaviorCollection2.Attach(obj); } } }