본문 바로가기
프로그래밍/C#, WPF, .Net

[WPF] Window 창을 추가하고 새 창을 여는 방법 (모달/모달리스, Show(), ShowDialog(), how to add window)

by GhostWeb 2020. 4. 11.
반응형

이번에는 WPF에서 Window 창을 추가하고 새 창을 여는 방법에 대해서 알아보도록 할게요.


1. 창 추가하기

우선 프로젝트의 솔루션 탐색기에서 프로젝트를 선택하고 마우스 오른쪽 버튼을 클릭하세요.

그다음 나오는 메뉴에서 <추가> - <창(WPF)>을 클릭하세요.



새 항목으로도 추가 가능하며, 기존 창을 가져오실 분은 <기존 항목>을 클릭하여 추가하세요.


기본적으로 창의 파일 이름은 Windows1.xaml로 설정되어 있으며 원하시는 이름으로 변경하고 오른쪽 아래에 있는 <추가> 버튼을 클릭하세요.



이제 창이 추가되었으니 마음껏 컨트롤을 배치하셔도 돼요.

그리고 창을 열기 위해 x:Class="XXX.Window1"의 XXX.Window1 정보가 필요하니 기억하세요. 




2. 새 창 열기

창을 여는 방법은 아래 처럼 2가지 방식이 있어요.


- Show() : 뒤에 있는 창으로 이동 가능 (모달리스)

- ShowDialog() : 해당 창을 닫기 전까지는 뒤에 있는 창으로 이동 못함 (모달)


모달리스는 창끼리 포커싱 이동이 가능하여 왔다갔다 하는 용도로 쓰고 모달은 새 창을 띄워 거기서 일을 끝내고 돌아와야 되는 창을 구성할 때 쓰여요. 


테스트를 위해 MainWindow에 버튼 2개를 만든 다음 하나는 Show(모달리스), ShowDialog(모달) 방식으로 열어볼게요.



창 1개를 다른 방식으로 여는 거라 헷갈리시는 분은 창을 한 개 더 만들고 창의 이름, 타이틀 바를 다르게 해서 테스트하셔도 돼요.


- 전체 코드

위에서 추가한 버튼을 더블 클릭하여 클릭 이벤트를 추가하고 다음과 같이 새 창을 여는 코드를 입력하세요.


TestApp.Window1는 아까 추가한 새 창의 xaml 코드의 Window안에 있는 x:Class="TestApp.Window1"와 동일합니다.



private void ButtonShow_Click(object sender, RoutedEventArgs e)

{

    TestApp.Window1 TestWindow = new TestApp.Window1();


    // 모달리스 : 뒤에 있는 창으로 이동 가능

    TestWindow.Show();

}


private void ButtonShowDialog_Click(object sender, RoutedEventArgs e)

{

    TestApp.Window1 TestWindow = new TestApp.Window1();


    // 모달 : 해당 창을 닫기 전까지는 뒤에 있는 창으로 이동 못함

    TestWindow.ShowDialog();

}



- Show(), 모달리스 방식으로 창을 열었을 경우

Show()로 새 창을 열었을 때 뒤에 있는 MainWindow로 이동, 제어가 가능한 것을 볼 수 있어요.



- ShowDialog(), 모달 방식으로 창을 열었을 경우

ShowDialog()로 새 창을 열고 뒤에 있는 MainWindow로 이동하려면 경고음과 함께 MainWindow 창으로 돌아갈 수 없는 것을 볼 수 있어요.



그럼 이상으로 Show(), ShowDialog() 설명을 마치며 오늘도 즐거운 하루 보내세요.


반응형