使用windowstate充分最大化WPF窗口

本文关键字:WPF 窗口 最大化 windowstate 使用 | 更新日期: 2023-09-27 18:18:50

我使用下面的代码来改变屏幕的大小:

    private void MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        if (e.ChangedButton == MouseButton.Left)
        {
            switch (WindowState)
            {
                case (WindowState.Maximized):
                    {
                        WindowState = WindowState.Normal;
                        break;
                    }
                case (WindowState.Normal):
                    {
                        WindowState = WindowState.Maximized;
                        break;
                    }
            }
        }
    }

然而,当我双击一旦程序开始,我得到一个小的差距沿着窗体的底部。为了增加混乱,当我将窗体的大小重新调整到任何大小(使用拖动移动)时,问题是固定的。有人能解释一下为什么会发生这种情况,以及解决问题的可能方法吗?

使用windowstate充分最大化WPF窗口

为了充分最大化您的窗口,将WindowStyle设置为None, ResizeMode设置为NoResize, WindowState设置为Maximized


[Update]下面的代码对我来说工作得很好(请注意,我已经重命名了您的事件处理程序,因为您隐藏了事件System.Windows.Controls.Control.MouseDoubleClick)。它从Kiosk模式(全屏无窗口铬)调整到常规模式没有问题:

private void Window_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
    if (e.ChangedButton == MouseButton.Left)
    {
        switch (WindowState)
        {
            case (WindowState.Maximized):
                ResizeMode = ResizeMode.CanResize; 
                WindowStyle = WindowStyle.SingleBorderWindow;
                WindowState = WindowState.Normal;
                break;
            case (WindowState.Normal):
                ResizeMode = ResizeMode.NoResize;
                WindowStyle = WindowStyle.None;
                WindowState = WindowState.Maximized;
                break;
        }
    }
}