WPF 앱을 화면 중앙에 배치하는 방법은 무엇입니까?


110

시작시 기본 화면의 WPF 앱을 중앙에 배치하고 싶습니다. myWindow.Left 및 myWindow.Top을 설정해야한다는 것을 알고 있지만 값은 어디에서 얻을 수 있습니까?

나는 System.Windows.Forms.Screen.PrimaryScreen분명히 WPF가 아닌 것을 발견했습니다 . 화면 해상도 또는 이와 유사한 것을 제공하는 WPF 대안이 있습니까?

답변:


143

이것을 창 생성자에 넣으십시오.

WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

.NET FrameworkSupported in : 4, 3.5, 3.0

.NET Framework 클라이언트 프로필 지원 : 4, 3.5 SP1


2
나를 위해 일했습니다 (.NET 4) 그리고 나는 또한 WindowStartupLocation.CenterOwner일부 자식 창을 좋아 합니다
Stonetip

기본값은 Manual입니다. 참조 : msdn.microsoft.com/en-us/library/…
CJBS


49

WPF 앱에서 Screen 클래스를 계속 사용할 수 있습니다. 응용 프로그램에서 System.Windows.Forms 어셈블리를 참조하기 만하면됩니다. 이를 완료하면 (아래 예제에서 System.Drawing을 참조) :

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

... 잘 작동합니다.

주 창 속성 WindowStartupLocation을 CenterScreen으로 설정하는 것을 고려해 보셨습니까?


1
오 .. 그건 몰랐어요. 감사.
Marcel B

1
WindowStartupLocation을 찾고있었습니다. 이전에 본 적이 있다는 것을 알고 매우 유용했습니다!
chocojosh

@Michael Petrotta 감사합니다. 나는 속성을 더 자주보아야한다.
meffordm 2010 년

8

PresentationFramework의 SystemParameters 클래스는 어떻습니까? 그것은이 Workarea에의 당신을 위해 무엇을 찾고있는 것 같다 속성을.

그러나 Window.WindowStartupLocation 설정이 작동하지 않는 이유는 무엇입니까? CenterScreen은 열거 형 값 중 하나입니다. 센터링을 조정해야합니까?


Great find :) 적어도 나를 위해 중앙 화면의 문제는 로그인 창이 작고 앱을 여는 동안 사용자가 클릭하면 종종 눈에 띄지 않고 백그라운드로 들어갑니다. 그러나 중앙의 기본 디스플레이에서 열 수 있으면 제대로 작동합니다. 참고 : 대부분의 사용자는 4 개 이상의 화면을 사용합니다
Michal Ciechan

4 개 이상의 화면, 나를 세어보세요!
user7116

7

System.Windows.Forms애플리케이션 에서 어셈블리 를 참조 할 필요가 없습니다 . 대신 System.Windows.SystemParameters.WorkArea. 이것은 System.Windows.Forms.Screen.PrimaryScreen.WorkingArea!


2

WPF에 해당하는 것은 없습니다. System.Windows.Forms.Screen여전히 .NET 프레임 워크의 일부이며 WPF에서 사용할 수 있습니다.

자세한 내용은 이 질문 을 참조하십시오. 그러나 WindowInteropHelper클래스를 사용 하여 WPF 컨트롤을 래핑 하여 화면과 관련된 호출을 사용할 수 있습니다 .


2
var window = new MyWindow();

화면 중앙 사용 :

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterScreen;

부모 창의 중앙에 사용 :

window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner;

0

나는 그것을 WPF 코드에 넣는 것을 선호합니다.

에서 [WindowName].xaml파일 :

<Window x:Class=...
...
WindowStartupLocation ="CenterScreen">
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.