我在使用WPF和C#创建的应用程序中有一个窗口。我设置MaxHeight = 200,MaxWidth = 500和StartupLocation = CenterScreen.However最大化此窗口使其位于屏幕的左上区域,即:不再在中心!即使在最大化条件下在Window_StateChanged事件中设置Left = 200和Top = 200,最大化窗口始终位于左上部。
private void Window_StateChanged(object sender, EventArgs e)
{
if (this.WindowState == WindowState.Maximized)
{
// Left = System.Windows.SystemParameters.WorkArea.Width - Width;
Left = 200;
// Top = System.Windows.SystemParameters.WorkArea.Height - Height;
Top = 200;
}
}
我应该怎么做以确保最大化的窗口位于中心? 非常感谢提前。
答案 0 :(得分:2)
当你在Window_StateChanged中检测到最大化时,将其设置回正常状态。看看这个:disable maximize capacity in a wpf window
答案 1 :(得分:1)
您无法设置最大化窗口的位置。根据定义,它会尝试占据整个屏幕,因此总是将左上角置于0,0。 您可以根据需要执行的操作是拦截State更改事件,将窗口大小设置为最大值,然后将State设置回WindowState.Normal
答案 2 :(得分:0)
您可以通过覆盖WndProc来实现此目的
protected override void WndProc( ref Message m )
{
if( m.Msg == 0x0112 ) //WM_SYSCOMMAND
{ // Check your window state here
if (m.WParam == new IntPtr( 0xF030 ) ) // Maximize event - SC_MAXIMIZE from Winuser.h
{ // THe window is being maximized }
}
base.WndProc(ref m);
}