Как изменить StartupUri приложения WPF?

Я пытаюсь изменить 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 должен загружаться, но это не так, в URI запуска App.xaml вообще не определено.

Примечание: ошибка подтверждена

Я заметил, что ShowDialog устанавливает Application.MainWindow, и когда диалог заканчивается, он устанавливает его обратно в ноль, и из-за этого параметра StartupUri не работает после вызова модального диалога в OnStartup или событии Startup.

Нет ошибок или исключений в отношении неверного URI или чего-либо подобного.

Этот метод работает без вызова DialogBox в событии Startup или OnStartup, я думаю, что вызов showdialog для этого метода приводит к тому, что его основное окно устанавливается в окно с истекшим сроком действия, и после этого оно закрывается.

Ответы на вопрос(4)

Ваш ответ на вопрос