App.csを変更し、コードビハインドからWPF XAMLファイルを読み込もうとしていますが、正常に機能していません。
StartupUriとして設定しようとしても起動しませんが、この後プログラムは終了します。
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
LoginDialog dlg = new LoginDialog();
if (dlg.ShowDialog() != true)
return;
switch (dlg.ChoiceApp) {
case ChoiceApp.CustomerEntry:
StartupUri = new Uri("/MyApp;component/Forms/CustomerEntry.xaml",
UriKind.Relative);
break;
case ChoiceApp.VendorEntry:
StartupUri = new Uri("/MyApp;component/Forms/VendorEntry.xaml",
UriKind.Relative);
break;
}
}
}
今でもトレースを行ったところ、LoginDialogが正しく機能し、値を正しく返していることがわかりましたが、「StartupUri」の設定は機能しません。
リバースアセンブリで、OnStartupの後にAppのDoStartupメソッドが呼び出されることを確認したため、技術的にはStartupUriを読み込む必要がありますが、App.xamlではstartupuriがまったく定義されていません。
注:バグが確認されました
ShowDialogがApplication.MainWindowを設定し、ダイアログが終了するとnullに戻すことに気付きました。この設定のため、OnStartupまたはStartupイベントでモーダルダイアログを呼び出した後、StartupUriは機能しません。
無効なURIなどに関するエラーや例外はありません。
このメソッドは、StartupイベントまたはOnStartupでDialogBoxが呼び出されなくても機能します。このメソッドでshowdialogを呼び出すと、メインウィンドウが期限切れのウィンドウに設定され、この後にシャットダウンするようなものになると思います。