How do you center your main window in WPF?

c#, center, window, wpf

Solution

private void CenterWindowOnScreen()
{
    double screenWidth = System.Windows.SystemParameters.PrimaryScreenWidth;
    double screenHeight = System.Windows.SystemParameters.PrimaryScreenHeight;
    double windowWidth = this.Width;
    double windowHeight = this.Height;
    this.Left = (screenWidth / 2) - (windowWidth / 2);
    this.Top = (screenHeight / 2) - (windowHeight / 2);
}

You can use this method to set the window position to the center of your screen.

Problem

I have a WPF application and I need to know how to center the wain window programatically (not in XAML). I need to be able to do this both at startup and in response to certain user events. It has to be dynamically calculated since the window size itself is dynamic. What's the simplest way to do this? Under old Win32 code, I'd call the system metrics functions and work it all out. Is that still the way it's done or is there a simple `CenterWindowOnScreen()` function I can now call.

Original source

Related problems