如何更改WPF应用程序的StartupUri?

我正在尝试修改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”不起作用.

我检查了反向程序集,AppStartup方法在OnStartup后被调用,所以在技术上我的StartupUri必须加载,但它不会在App.xaml中启动uri并没有被定义.

注意:Bug已确认

我注意到ShowDialog设置Application.MainWindow,当对话框结束时,它将其设置为null,并且由于此设置,StartupUri在OnStartup或Startup事件中调用Modal对话框后不起作用.

没有关于无效uri或任何类似的错误或异常.

这个方法没有DialogBox在启动事件或OnStartup中被调用,我觉得在这个方法上调用showdialog会导致类似mainwindow被设置为过期的窗口,并在此之后关闭.

你还有一个在XAML中指定的StartupUri吗?如果是这样,请删除它,看看是否有帮助

如果没有,您可能需要采取不同的方式:将Dialog作为您的启动,然后根据所选值打开另一个窗口.

翻译自:http://stackoverflow.com/questions/1945843/how-to-change-startupuri-of-wpf-application

转载注明原文:如何更改WPF应用程序的StartupUri?