はじめに
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 に記載していた起動前処理、および、起動後処理は、下記イベントを利用することで対処可能です。
サンプルコード
.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:起動後処理
  }
}