水平居中垂直最大化的WPF窗口

时间:2010-09-27 17:35:13

标签: c# wpf windows events maximize

我有一个设置了MaxWidth的WPF窗口,所以当我点击最大化按钮时,它会垂直最大化而不是水平最大化。这是预期的行为。但是,窗口总是停靠在屏幕的左侧(Windows 7,如果这很重要),我希望它在最大化时水平居中。我尝试添加以下StateChanged事件处理程序,但它似乎没有做任何事情:

private void wdw_mainWindow_StateChanged(object sender, EventArgs e)
{
    switch (WindowState)
    {
        case WindowState.Maximized:
            var windowWidth = (double)GetValue(WidthProperty);
            Left = (SystemParameters.PrimaryScreenWidth / 2) - (windowWidth / 2);
            break;
    }
}

我在switch语句上设置了一个断点,当我点击我的应用中的“最大化”按钮时,这个代码肯定会受到影响。但是,即使设置Left后,窗口仍然牢牢地卡在屏幕的左侧。发生了什么事?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

答案 2 :(得分:0)

注册到位置也发生了变化,当两个事件都发生时执行逻辑,它就可以了。