void EnsureFloatingWindowsLocations() { foreach (var window in dockingManager.FloatingWindows) { var newLocation = FormLocationHelper.Validate(new Rect(window.Left, window.Top, window.Width, window.Height).TransformToDevice(window).ToSystemDrawing()).ToWpf().TransformFromDevice(window); window.Left = newLocation.Left; window.Top = newLocation.Top; } }
protected override void OnSourceInitialized(EventArgs e) { base.OnSourceInitialized(e); HwndSource.FromHwnd(this.MainWin32Window.Handle).AddHook(SingleInstanceHelper.WndProc); // validate after PresentationSource is initialized Rect bounds = new Rect(Left, Top, Width, Height); bounds = FormLocationHelper.Validate(bounds.TransformToDevice(this).ToSystemDrawing()).ToWpf().TransformFromDevice(this); SetBounds(bounds); // Set WindowState after PresentationSource is initialized, because now bounds and location are properly set. this.WindowState = lastNonMinimizedWindowState; }