👨‍💻

WPF定石 - スタートアップルーチン

2024/12/26に公開

はじめに

C# - WPF ソフト開発時に、決まり事として実施していた内容を記載します。

テスト環境

ここに記載した情報/ソースコードは、Visual Studio Community 2022 を利用した下記プロジェクトで生成したモジュールを Windows 11 24H2 で動作確認しています。

  • WPF - .NET Framework 4.8
  • WPF - .NET 8

スタートアップルーチン

デフォルトだと App.xaml の StartupUri 属性に指定された Window が開かれます。
この形態だと、起動前処理などを記述することができません。
Windows Forms で Program.cs に記載していた起動前処理、および、起動後処理は、下記イベントを利用することで対処可能です。

https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.application.startup

https://learn.microsoft.com/ja-jp/dotnet/api/system.windows.application.exit

サンプルコード

.NET Framework / .NET ともに同一ソースコードです。
App.xaml で StartupUri を削除して Startup="App_Startup" Exit="App_Exit" を追加します。

App.xaml
<Application x:Class="Hoge.App"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:local="clr-namespace:Hoge"
  Startup="App_Startup" Exit="App_Exit">
  <Application.Resources>
  </Application.Resources>
</Application>

App.xaml.cs で App_Startup と App_Exit を実装します。

App.xaml.cs
public partial class App : Application
{
  private void App_Startup(object sender, StartupEventArgs e)
  {
    // TODO:起動前処理
    
    // メインウィンドウ
    var mainWindow = new MainWindow();
    mainWindow.Show();
  }
  private void App_Exit(object sender, ExitEventArgs e)
  {
    // TODO:起動後処理
  }
}

出典

本記事は、2024/12/20 Qiita 投稿記事の転載です。

WPF定石 - スタートアップルーチン

Discussion