gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 07:44:53 27 4
gpt4 key购买 nike

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

我在反向汇编中检查了 App 的 DoStartup 方法在 OnStartup 之后被调用,因此从技术上讲,我的 StartupUri 必须加载,但事实并非如此,在 App.xaml 中启动 uri 根本没有定义。

注意:已确认错误

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

没有关于无效 uri 或类似内容的错误或异常。

此方法无需在启动事件或 OnStartup 中调用 DialogBox 即可工作,我认为在此方法上调用 showdialog 会导致其主窗口被设置为过期窗口,并在此之后关闭。

最佳答案

Akash,我在尝试实现像您一样的 LoginDialog 时遇到了这个问题。该对话框没有错误,但其行为是设计使然。

Not a bug. The default ShutdownMode of Application is OnLastWindowClosed, so as soon as the first window is closed your application will start shutting down! Change to OnExplicitShutdown and it will work, but you'll have to manage the shutdown.

请参阅之前的 StackOverflow 问题:WPF ShowDialog returns null immediately on second call

关于wpf - 如何更改WPF应用程序的StartupUri?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1945843/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com