DisposingTrigger.cs 767 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. using System.Reactive.Disposables;
  2. using Avalonia.Xaml.Interactivity;
  3. namespace Avalonia.Xaml.Interactions.Custom;
  4. /// <summary>
  5. ///
  6. /// </summary>
  7. public abstract class DisposingTrigger : StyledElementTrigger
  8. {
  9. private readonly CompositeDisposable _disposables = new();
  10. /// <summary>
  11. ///
  12. /// </summary>
  13. protected override void OnAttached()
  14. {
  15. base.OnAttached();
  16. OnAttached(_disposables);
  17. }
  18. /// <summary>
  19. ///
  20. /// </summary>
  21. /// <param name="disposables"></param>
  22. protected abstract void OnAttached(CompositeDisposable disposables);
  23. /// <summary>
  24. ///
  25. /// </summary>
  26. protected override void OnDetaching()
  27. {
  28. base.OnDetaching();
  29. _disposables.Dispose();
  30. }
  31. }