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