diff --git a/src/Avalonia.Controls/Platform/IWindowImpl.cs b/src/Avalonia.Controls/Platform/IWindowImpl.cs
index 609e9834cb..b8429d32fc 100644
--- a/src/Avalonia.Controls/Platform/IWindowImpl.cs
+++ b/src/Avalonia.Controls/Platform/IWindowImpl.cs
@@ -35,6 +35,11 @@ namespace Avalonia.Platform
///
void SetSystemDecorations(bool enabled);
+ ///
+ /// When system decorations are disabled sets if the maximized state covers the entire screen or just the working area.
+ ///
+ void SetIgnoreTaskBarWhenMaximized(bool enable);
+
///
/// Sets the icon of this window.
///
diff --git a/src/Windows/Avalonia.Win32/WindowImpl.cs b/src/Windows/Avalonia.Win32/WindowImpl.cs
index ba348b7d18..c2ef66ce13 100644
--- a/src/Windows/Avalonia.Win32/WindowImpl.cs
+++ b/src/Windows/Avalonia.Win32/WindowImpl.cs
@@ -33,6 +33,7 @@ namespace Avalonia.Win32
private bool _trackingMouse;
private bool _isActive;
private bool _decorated = true;
+ private bool _ignoreTaskBarWhenMaximized = true;
private double _scaling = 1;
private WindowState _showWindowState;
@@ -688,7 +689,7 @@ namespace Avalonia.Win32
case WindowState.Maximized:
command = UnmanagedMethods.ShowWindowCommand.Maximize;
- if (!_decorated)
+ if (!_decorated && !_ignoreTaskBarWhenMaximized)
{
IntPtr monitor = MonitorFromWindow(_hwnd, MONITOR.MONITOR_DEFAULTTONEAREST);
@@ -741,5 +742,15 @@ namespace Avalonia.Win32
return (int)(ptr.ToInt64() & 0xffffffff);
}
+
+ public void SetIgnoreTaskBarWhenMaximized(bool enable)
+ {
+ _ignoreTaskBarWhenMaximized = enable;
+
+ if(_showWindowState == WindowState.Maximized)
+ {
+ ShowWindow(WindowState.Maximized);
+ }
+ }
}
}