diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs
index 5ca3647da7..32c40847c5 100644
--- a/src/Avalonia.Controls/TopLevel.cs
+++ b/src/Avalonia.Controls/TopLevel.cs
@@ -136,6 +136,11 @@ namespace Avalonia.Controls
}
}
+ ///
+ /// Fired when the window is opened.
+ ///
+ public event EventHandler Opened;
+
///
/// Fired when the window is closed.
///
@@ -311,6 +316,12 @@ namespace Avalonia.Controls
$"Control '{GetType().Name}' is a top level control and cannot be added as a child.");
}
+ ///
+ /// Raises the event.
+ ///
+ /// The event args.
+ protected virtual void OnOpened(EventArgs e) => Opened?.Invoke(this, e);
+
///
/// Tries to get a service from an , logging a
/// warning if not found.
diff --git a/src/Avalonia.Controls/Window.cs b/src/Avalonia.Controls/Window.cs
index 53f727900b..f5af6774b5 100644
--- a/src/Avalonia.Controls/Window.cs
+++ b/src/Avalonia.Controls/Window.cs
@@ -389,6 +389,7 @@ namespace Avalonia.Controls
Renderer?.Start();
}
SetWindowStartupLocation(Owner?.PlatformImpl);
+ OnOpened(EventArgs.Empty);
}
///
@@ -458,6 +459,7 @@ namespace Avalonia.Controls
owner.Activate();
result.SetResult((TResult)(_dialogResult ?? default(TResult)));
});
+ OnOpened(EventArgs.Empty);
}
SetWindowStartupLocation(owner);
diff --git a/src/Avalonia.Controls/WindowBase.cs b/src/Avalonia.Controls/WindowBase.cs
index 2fba8619c6..56ffd315f1 100644
--- a/src/Avalonia.Controls/WindowBase.cs
+++ b/src/Avalonia.Controls/WindowBase.cs
@@ -163,7 +163,7 @@ namespace Avalonia.Controls
}
///
- /// Shows the popup.
+ /// Shows the window.
///
public virtual void Show()
{
@@ -181,6 +181,7 @@ namespace Avalonia.Controls
}
PlatformImpl?.Show();
Renderer?.Start();
+ OnOpened(EventArgs.Empty);
}
finally
{