使用windowstate完全最大化wpf窗口

时间:2011-12-28 00:59:47

标签: c# wpf

我使用以下代码更改屏幕大小:

    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;
                    }
            }
        }
    }

但是,当程序启动时我双击,我会在表单底部出现一个小间隙。为了增加混淆,当我将表单重新调整为任何大小(使用拖动移动)时,问题就解决了。有人可以解释为什么会发生这种情况,并解决问题吗?

1 个答案:

答案 0 :(得分:3)

要完全最大化您的窗口,请将WindowStyle设置为None,将ResizeMode设置为NoResize,将WindowState设置为Maximized


[更新] 以下代码适用于我(请注意,我已重命名您的事件处理程序,因为您隐藏了事件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;
        }
    }
}