はじめに
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:起動後処理
}
}