ExecuteCommandOnActivatedBehavior.cs 998 B

1234567891011121314151617181920212223242526272829303132333435
  1. using System;
  2. using System.Reactive.Disposables;
  3. using Avalonia.Controls;
  4. using Avalonia.Controls.ApplicationLifetimes;
  5. namespace Avalonia.Xaml.Interactions.Custom;
  6. /// <summary>
  7. ///
  8. /// </summary>
  9. public class ExecuteCommandOnActivatedBehavior : ExecuteCommandBehaviorBase
  10. {
  11. /// <summary>
  12. ///
  13. /// </summary>
  14. /// <param name="disposable"></param>
  15. protected override void OnAttachedToVisualTree(CompositeDisposable disposable)
  16. {
  17. if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime lifetime)
  18. {
  19. var mainWindow = SourceControl as Window ?? lifetime.MainWindow;
  20. if (mainWindow is not null)
  21. {
  22. mainWindow.Activated += WindowOnActivated;
  23. disposable.Add(Disposable.Create(() => mainWindow.Activated -= WindowOnActivated));
  24. }
  25. }
  26. }
  27. private void WindowOnActivated(object? sender, EventArgs e)
  28. {
  29. ExecuteCommand();
  30. }
  31. }