WPF, похоже, принимает решение о том, переходить ли в полноэкранный режим или соблюдать панель задач на основе WindowStyle во время максимизации. Таким образом, грязное, но эффективное решение состоит в том, чтобы переключить окно обратно в не максимизированное, установить WindowStyle, а затем снова установить окно в максимизированное:
private bool _inStateChange;
protected override void OnStateChanged(EventArgs e)
{
if (WindowState == WindowState.Maximized && !_inStateChange)
{
_inStateChange = true;
WindowState = WindowState.Normal;
WindowStyle = WindowStyle.None;
WindowState = WindowState.Maximized;
ResizeMode = ResizeMode.NoResize;
_inStateChange = false;
}
base.OnStateChanged(e);
}
Хотя код явно некрасив, переход к нормальному, а затем к максимизированному, кажется, не ухудшает восприятие пользователем. На моем дисплее я заметил мерцание и с кодом F11, и с максимизацией клуджа, но заметно не хуже при максимизации клуджа. Но ваш пробег может отличаться!