WPF – Window Top and Left values are not updated correctly when maximizing a Window in .NET 4you can use this solution for update Window Top and Left values when maximizing a Window.
private void Window_SizeChanged(object sender, SizeChangedEventArgs e)
{
// if window Maximized set Left, top based on screen.WorkingArea Left, Top
if (WindowState == WindowState.Maximized)
{
//get mouse position
System.Windows.Point pt = Mouse.GetPosition(this);
//get postion on screen
Point pointToScreen = PointToScreen(pt);
//get all screen
System.Windows.Forms.Screen[] screens = System.Windows.Forms.Screen.AllScreens;
//loop all screen
foreach (System.Windows.Forms.Screen screen in screens)
{
System.Drawing.Point formTopLeft = new System.Drawing.Point((int)pointToScreen.X, (int)pointToScreen.Y);
//check pointToScreen is on a screen
if (screen.WorkingArea.Contains(formTopLeft))
{
//set mainwindow Left, top based on screen.WorkingArea Left, Top
this.Left = screen.WorkingArea.Left;
this.Top = screen.WorkingArea.Top;
}
}
}
}