기본 애플리케이션 창을 가져오거나 설정하는 방법(WPF .NET)

이 문서에서는 WPF(Windows Presentation Foundation)의 기본 애플리케이션 창을 가져오거나 설정하는 방법을 설명합니다. WPF 애플리케이션 내에서 인스턴스화된 첫 번째 WindowApplication에 의해 자동으로 기본 애플리케이션 창으로 설정됩니다. 기본 창은 Application.MainWindow 속성으로 참조됩니다.

대부분의 경우 프로젝트 템플릿은 Application.StartupUri를 _Window1.xaml_과 같은 애플리케이션 내의 XAML 파일로 설정합니다. 이는 애플리케이션에 의해 인스턴스화되고 표시되는 첫 번째 창이며 기본 창이 됩니다.

애플리케이션의 기본 동작은 마지막 창이 닫힐 때 종료하는 것입니다. 이 동작은 Application.ShutdownMode 속성에 의해 제어됩니다. 대신 MainWindow가 닫혀 있는 경우 애플리케이션이 종료되도록 구성할 수 있습니다. 이 동작을 사용하도록 설정하려면 Application.ShutdownModeOnMainWindowClose로 설정합니다.

XAML에서 기본 창 설정

WPF 애플리케이션을 생성하는 템플릿은 일반적으로 Application.StartupUri 속성을 XAML 파일로 설정합니다. 이 속성은 다음과 같은 이유로 유용합니다.

  1. 프로젝트의 다른 XAML 파일로 쉽게 변경할 수 있습니다.
  2. 지정된 창을 자동으로 인스턴스화하고 표시합니다.
  3. 지정된 창이 Application.MainWindow가 됩니다.
<Application x:Class="MainApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MainApp"
             StartupUri="Window1.xaml">
    
</Application>

Application.StartupUri를 사용하는 대신 Application.MainWindow를 XAML로 선언된 창으로 설정할 수 있습니다. 그러나 여기서 지정된 창은 표시되지 않으며 표시 여부를 설정해야 합니다.

<Application x:Class="MainApp.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:MainApp">

    <Application.MainWindow>
        <local:Window2 Visibility="Visible" />
    </Application.MainWindow>
</Application>

주의

Application.StartupUriApplication.MainWindow 속성을 모두 설정하면 애플리케이션이 시작될 때 두 창이 모두 표시됩니다.

또한 Application.Startup 이벤트를 사용하여 창을 열 수 있습니다. 자세한 내용은 시작 이벤트를 사용하여 창 열기를 참조하세요.

코드에서 기본 창 설정

애플리케이션에서 인스턴스화된 첫 번째 창은 자동으로 기본 창이 되며 Application.MainWindow 속성으로 설정됩니다. 다른 기본 창을 설정하려면 이 속성을 창으로 변경합니다.

Application.Current.MainWindow = new Window2();

Application.Current.MainWindow.Show();
Application.Current.MainWindow = New Window2()

Application.Current.MainWindow.Show()

애플리케이션에서 창의 인스턴스를 만든 적이 없는 경우 다음 코드는 이전 코드와 기능적으로 동일합니다.

var appWindow = new Window2();

appWindow.Show();
Dim appWindow As New Window2()

appWindow.Show()

창 개체 인스턴스가 생성되자마자 Application.MainWindow에 할당됩니다.

기본 창 가져오기

Application.MainWindow 속성을 검사하여 기본 창으로 선택한 창에 액세스할 수 있습니다. 다음 코드는 단추를 클릭할 때 기본 창의 제목이 있는 메시지 상자를 표시합니다.

private void Button_Click(object sender, RoutedEventArgs e) =>
    MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}");
Private Sub Button_Click(sender As Object, e As RoutedEventArgs)
    MessageBox.Show($"The main window's title is: {Application.Current.MainWindow.Title}")
End Sub

참고 항목