diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs
index c54ebd5360..293809bf51 100644
--- a/src/Avalonia.Controls/TopLevel.cs
+++ b/src/Avalonia.Controls/TopLevel.cs
@@ -271,7 +271,7 @@ namespace Avalonia.Controls
{
(this as IInputRoot).MouseDevice?.TopLevelClosed(this);
PlatformImpl = null;
- Closed?.Invoke(this, EventArgs.Empty);
+ OnClosed(EventArgs.Empty);
Renderer?.Dispose();
Renderer = null;
}
@@ -317,6 +317,12 @@ namespace Avalonia.Controls
/// The event args.
protected virtual void OnOpened(EventArgs e) => Opened?.Invoke(this, e);
+ ///
+ /// Raises the event.
+ ///
+ /// The event args.
+ protected virtual void OnClosed(EventArgs e) => Closed?.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 ef43746665..ec2fca0db5 100644
--- a/src/Avalonia.Controls/Window.cs
+++ b/src/Avalonia.Controls/Window.cs
@@ -557,7 +557,7 @@ namespace Avalonia.Controls
return result;
}
- protected override void HandleClosed()
+ protected sealed override void HandleClosed()
{
RaiseEvent(new RoutedEventArgs(WindowClosedEvent));
@@ -565,7 +565,7 @@ namespace Avalonia.Controls
}
///
- protected override void HandleResized(Size clientSize)
+ protected sealed override void HandleResized(Size clientSize)
{
if (!AutoSizing)
{