Я пытаюсь изменить 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» не работает.
Я проверил в обратной сборке, что метод DoStartup в App вызывается после OnStartup, поэтому технически мой StartupUri должен загружаться, но это не так, при запуске App.xaml uri вообще не определен.
Примечание: ошибка подтверждена
Я заметил, что ShowDialog устанавливает Application.MainWindow, и когда диалог заканчивается, он устанавливает его обратно в ноль, и из-за этого параметра StartupUri не работает после вызова модального диалога в OnStartup или событии Startup.
Нет ошибок или исключений в отношении недопустимого URI или чего-либо подобного.
Этот метод работает без вызова DialogBox в событии Startup или OnStartup, я думаю, что вызов showdialog для этого метода приводит к тому, что его основное окно устанавливается в окно с истекшим сроком действия, и после этого оно закрывается.