次の方法で共有


メイン アプリケーション ウィンドウを取得または設定する方法

この記事では、Windows Presentation Foundation (WPF) のメイン アプリケーション ウィンドウを取得または設定する方法について説明します。 WPF アプリケーション内でインスタンス化された最初の Window は、メイン アプリケーション ウィンドウとして Application によって自動的に設定されます。 メイン ウィンドウは、 Application.MainWindow プロパティで参照されます。

プロジェクト テンプレートは、しばしばApplication.StartupUriをアプリケーション内の XAML ファイル (_Window1.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を使用する代わりに、を 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.StartupUriプロパティとApplication.MainWindowプロパティの両方を設定すると、アプリケーションの起動時に両方のウィンドウが表示されます。

また、 Application.Startup イベントを使用してウィンドウを開くこともできます。 詳細については、「 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

こちらも参照ください