diff --git a/src/Avalonia.Controls/TopLevel.cs b/src/Avalonia.Controls/TopLevel.cs
index 65bd2b8d2f..bbd551ace3 100644
--- a/src/Avalonia.Controls/TopLevel.cs
+++ b/src/Avalonia.Controls/TopLevel.cs
@@ -168,6 +168,7 @@ namespace Avalonia.Controls
styler?.ApplyStyles(this);
ClientSize = impl.ClientSize;
+ FrameSize = impl.FrameSize;
this.GetObservable(PointerOverElementProperty)
.Select(
@@ -207,7 +208,11 @@ namespace Avalonia.Controls
///
/// Gets or sets the total size of the window.
///
- public Size FrameSize => _frameSize;
+ public Size FrameSize
+ {
+ get { return _frameSize; }
+ protected set { SetAndRaise(FrameSizeProperty, ref _frameSize, value); }
+ }
///
/// Gets or sets the that the TopLevel should use when possible.
@@ -378,6 +383,7 @@ namespace Avalonia.Controls
protected virtual void HandleResized(Size clientSize)
{
ClientSize = clientSize;
+ FrameSize = PlatformImpl.FrameSize;
Width = clientSize.Width;
Height = clientSize.Height;
LayoutManager.ExecuteLayoutPass();
@@ -457,14 +463,6 @@ namespace Avalonia.Controls
/// The event args.
protected virtual void OnClosed(EventArgs e) => Closed?.Invoke(this, e);
- protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
- {
- if (change.Property == ClientSizeProperty)
- {
- SetAndRaise(FrameSizeProperty, ref _frameSize, PlatformImpl.FrameSize);
- }
- }
-
///
/// 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 cc8e27c3ec..700c3d9bad 100644
--- a/src/Avalonia.Controls/Window.cs
+++ b/src/Avalonia.Controls/Window.cs
@@ -950,7 +950,6 @@ namespace Avalonia.Controls
protected override void OnPropertyChanged(AvaloniaPropertyChangedEventArgs change)
{
- base.OnPropertyChanged(change);
if (change.Property == SystemDecorationsProperty)
{
var typedNewValue = change.NewValue.GetValueOrDefault();
diff --git a/src/Avalonia.Controls/WindowBase.cs b/src/Avalonia.Controls/WindowBase.cs
index cdcb499e98..2b31cef8bd 100644
--- a/src/Avalonia.Controls/WindowBase.cs
+++ b/src/Avalonia.Controls/WindowBase.cs
@@ -222,6 +222,7 @@ namespace Avalonia.Controls
protected override void HandleResized(Size clientSize)
{
ClientSize = clientSize;
+ FrameSize = PlatformImpl.FrameSize;
LayoutManager.ExecuteLayoutPass();
Renderer?.Resized(clientSize);
}