BehaviorCollection.cs 912 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. using System.Windows;
  2. namespace HandyControl.Interactivity;
  3. public sealed class BehaviorCollection : AttachableCollection<Behavior>
  4. {
  5. internal BehaviorCollection()
  6. {
  7. }
  8. protected override void OnAttached()
  9. {
  10. foreach (var behavior in this)
  11. behavior.Attach(AssociatedObject);
  12. }
  13. protected override void OnDetaching()
  14. {
  15. foreach (var behavior in this)
  16. behavior.Detach();
  17. }
  18. internal override void ItemAdded(Behavior item)
  19. {
  20. if (item == null || AssociatedObject == null)
  21. return;
  22. item.Attach(AssociatedObject);
  23. }
  24. internal override void ItemRemoved(Behavior item)
  25. {
  26. if (((IAttachedObject) item)?.AssociatedObject == null)
  27. return;
  28. item.Detach();
  29. }
  30. protected override Freezable CreateInstanceCore()
  31. {
  32. return new BehaviorCollection();
  33. }
  34. }