C#/WPF
WPF 새 윈도우 위치 지정
기공이
2018. 1. 5. 11:16
WPF에서 어떤 위도우에서 새로운 윈도우를 불러낼 때가 있습니다.
이 때 새 윈도우가 생성되는 위치는 프로그램이 첫 실행된 위치에서 생성되게 됩니다.
윈도우의 위치는 해당 윈도우의 Top 속성과 Left 속성으로 인해 결정되게 되는데(MSDN),
이 속성이 프로그램의 첫 실행시에 결정되는 것입니다.
그래서 원하는 곳에 윈도우를 띄우기 위해서는 Top과 Left 속성을 설정해주어야 합니다.
간단한 예로 호출하는 윈도우의 중앙에서 창이 생성되도록 하는 코드입니다.
1 2 3 4 5 6 7 8 9 | private void Information_Click(object sender, RoutedEventArgs e) { InformationWindow informationWindow = new InformationWindow(); informationWindow.Top = this.Top + (this.ActualHeight - informationWindow.Height) / 2; informationWindow.Left = this.Left + (this.ActualWidth - informationWindow.Width) / 2; informationWindow.ShowDialog(); } | cs |
이 예제는 [프로그램 정보] 를 눌렀을 시 정보를 알려주는 윈도우가 Dialog 형태로 보여지도록 하는 함수입니다.
수치는 아래 그림처럼 Top이 현재 윈도우를 기준(this.Top)
아래(+)로 현재 윈도우의 반만큼 간 뒤, 새 윈도우의 반만큼 올라오면 됩니다.
그림
미흡한 그림이지만, 이해를 돕기 위해 그렸습니다.
이런 식으로 위치를 계산하여 원하는 위치에 새 윈도우를 띄우거나, 현재 윈도우의 위치를 옮길 수 도 있습니다.