我只是开始学习WPF,所以如果这个问题如此简单,请耐心等待,但我无法弄清楚究竟发生了什么。
我想要完成的是首先显示一个LoginWindow,然后在成功验证后显示MainWindow。我没有使用Visual Studio自动创建的默认App.xaml,而是创建了一个自定义应用程序类。登录工作完全正常,但app.Run(win)无效,它不显示我的MainWindow,应用程序立即退出。这里有什么我想念的吗?我有一个winform应用程序与几乎相同的启动类,它工作得很好。所以我不知道为什么这种方法在WPF中不起作用。
public class Startup
{
[STAThread()]
static void Main()
{
Application app = new Application();
WinLogin login = new WinLogin();
bool showLogin = true;
while (showLogin)
{
login.ShowDialog();
if (login.DialogResult.HasValue && login.DialogResult == true)
{
MainWindow win = new MainWindow();
app.Run(win);
if (!win.LogOff)
showLogin = false;
}
else
showLogin = false;
}
}
}
答案 0 :(得分:1)
显示对话框后,尝试设置
app.MainWindow = win;
在调用Application.Run()之前。我猜你的第一个对话框自动设置为主窗口,因此在应用程序关闭后关闭它。
此外,在创建应用程序后直接移动MainWindow创建。