using System; using System.Reactive.Disposables; using Avalonia.Controls; using Avalonia.Controls.ApplicationLifetimes; namespace Avalonia.Xaml.Interactions.Custom; /// /// /// public class ExecuteCommandOnActivatedBehavior : ExecuteCommandBehaviorBase { /// /// /// /// protected override void OnAttachedToVisualTree(CompositeDisposable disposable) { if (Application.Current?.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime lifetime) { var mainWindow = SourceControl as Window ?? lifetime.MainWindow; if (mainWindow is not null) { mainWindow.Activated += WindowOnActivated; disposable.Add(Disposable.Create(() => mainWindow.Activated -= WindowOnActivated)); } } } private void WindowOnActivated(object? sender, EventArgs e) { ExecuteCommand(); } }