How to center a WPF app on screen?

前端 未结 8 823
清歌不尽
清歌不尽 2021-01-30 09:53

I want to center my WPF app on startup on the primary screen. I know I have to set myWindow.Left and myWindow.Top, but where do I get the values?

I found System.Wi

相关标签:
8条回答
  • 2021-01-30 10:22

    There is no WPF equivalent. System.Windows.Forms.Screen is still part of the .NET framework and can be used from WPF though.

    See this question for more details, but you can use the calls relating to screens by using the WindowInteropHelper class to wrap your WPF control.

    0 讨论(0)
  • 2021-01-30 10:25

    xaml

    <Window ... WindowStartupLocation="CenterScreen">...
    
    0 讨论(0)
  • 2021-01-30 10:29

    You can still use the Screen class from a WPF app. You just need to reference the System.Windows.Forms assembly from your application. Once you've done that, (and referenced System.Drawing for the example below):

    Rectangle workingArea = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;
    

    ...works just fine.

    Have you considered setting your main window property WindowStartupLocation to CenterScreen?

    0 讨论(0)
  • 2021-01-30 10:33

    What about the SystemParameters class in PresentationFramework? It has a WorkArea property that seems to be what you are looking for.

    But, why won't setting the Window.WindowStartupLocation work? CenterScreen is one of the enum values. Do you have to tweak the centering?

    0 讨论(0)
  • 2021-01-30 10:36

    You don't need to reference the System.Windows.Forms assembly from your application. Instead, you can use System.Windows.SystemParameters.WorkArea. This is equivalent to the System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!

    0 讨论(0)
  • 2021-01-30 10:37

    Put this in your window constructor

    WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;
    

    .NET FrameworkSupported in: 4, 3.5, 3.0

    .NET Framework Client ProfileSupported in: 4, 3.5 SP1

    0 讨论(0)
提交回复
热议问题