У меня есть приложение с 2 Windows. Я удалил StartupUri
в App.xaml. Вместо этого я подписался на Startup
-Event, чтобы показать мою Windows.
Мои два окна называются Login
и MainWindow
.
В Startup
-Event у меня есть следующий код:
private void App_OnStartup(object sender, StartupEventArgs e)
{
var login = new Login();
var dialogResult = login.ShowDialog();
if (dialogResult.HasValue && dialogResult.Value)
{
var mainWindow = new MainWindow();
mainWindow.ShowDialog();
}
}
Когда я запускаю свое приложение, появляется окно входа в систему. В окне входа в систему есть только одна Button
. При нажатии этой Button
будет выполнен следующий код:
private void ButtonClick(object sender, RoutedEventArgs e)
{
DialogResult = true;
Close();
}
Мои ожидания теперь, что при щелчке по Button
в окне входа в систему появляется MainWindow. Вместо этого полное приложение прекращается.
Если я установил BreakPoint в StartUp -Event в if (dialogResult.HasValue && dialogResult.Value)
я могу ввести скобки и код в скобках выполняется, но MainWindow не появляется.
Любые идеи, почему это происходит?
Я могу решить эту проблему, вызвав MainWindow в Click -Event окна входа в систему.
var mainWindow = new MainWindow();
mainWindow.Show();
Close();
Этот пост может представлять интерес. Он указывает на эту ссылку, которая, как я думаю, описывает аналогичную проблему для того, что вы описываете.
В основном первое открытое окно считается основным окном приложения.
Я бы предположил, что вы должны оставить свой MainWindow
по умолчанию и открыть окно входа в событие Loaded
MainWindow
- если вход не увенчается успехом, закройте главное окно (прежде чем он получит возможность открыть).
Это связано с тем, что свойство ShutDown для вашего приложения обычно устанавливается на "OnLastWindowClose".
Таким образом, вы должны создать экземпляр своего MainWindow перед закрытием вашего окна входа в систему или изменить свойство Shutdown-Property.