С здесь , я подумал, что попробую установить WindowChrome.NonClientFrameEdges
.
При некоторых экспериментах выясняется, что вы можете получить желаемый эффект, установив его на NonClientFrameEdges.Bottom
при максимизации и вернув его на NonClientFrameEdges.None
, когда не максимизируйте.
Это приводит к тому, что поле исчезает по всем краям, кроме нижней, но крайне важно, чтобы перекрытие под панелью задач больше не происходило.
Важно, чтобы WindowChrome был установлен перед на WindowState, поэтому в моем коде есть функции (MainGrid2 содержит все содержимое окна, за исключением строки состояния, а StatusGrid содержит строку состояния ):
private void Maximise()
{
StatusGrid.Margin = new Thickness(7, 0, 7, 0);
MainGrid2.Margin = new Thickness(12, 12, 12, 0);
chrome.NonClientFrameEdges = NonClientFrameEdges.Bottom;
WindowChrome.SetWindowChrome(this, chrome);
WindowState = System.Windows.WindowState.Maximized;
}
private void Restore()
{
StatusGrid.Margin = new Thickness(0);
MainGrid2.Margin = new Thickness(5, 5, 5, 0);
chrome.NonClientFrameEdges = NonClientFrameEdges.None;
WindowChrome.SetWindowChrome(this, chrome);
WindowState = System.Windows.WindowState.Normal;
}