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)

아래(+)로 현재 윈도우의 반만큼 간 뒤, 새 윈도우의 반만큼 올라오면 됩니다.


그림

미흡한 그림이지만, 이해를 돕기 위해 그렸습니다.




이런 식으로 위치를 계산하여 원하는 위치에 새 윈도우를 띄우거나, 현재 윈도우의 위치를 옮길 수 도 있습니다.