WPF でメイン画面を表示する前に、自作のダイアログ(ログイン画面など)を表示するときの方法です。
App.xaml
WPF のアプリケーションには Main メソッドが存在しません。そのためアプリで一番最初に呼ばれる AppMain.xaml の Application タグへ Startup で呼ばれるメソッド名を以下の通り記述します。
<Application x:Class="LoginApp" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Startup="Application_Startup"> <!-- ここ -->
App.xaml.cs
App.xaml.cs の Startup はイベントハンドラの指定なので、実際に呼ばれるメソッドを App.xaml.cs へ以下の通り内容を追記します。
public partial class App : Application { // このメソッドを追加 private void Application_Startup(object sender, StartupEventArgs e) { // ログイン画面を表示する前に設定する this.MainWindow = new MainWindow(); // ログイン画面を表示 var loginWindow = new LoginWindow(); bool? dialogResult = loginWindow.ShowDialog(); if(!dialogResult) { this.Shutdown(); return; } // メイン画面を表示 this.MainWindow.Show(); } }
メソッドの一番最初の以下の式はおまじないです *1。メイン画面を正しく表示したいときは、ダイアログを設定する前に指定してください。
this.MainWindow = new MainWinodw();
次の行以降は、通常の Behavior でダイアログを表示する際の記述方法と同じです。
*1:本当は違いますが長くなるのでここでは説明しません。