在 WPF 中从一个 window 切换到另一个并使其处于活动状态

Switching from one window to another in WPF and making it active

我是 WPF 的新手,我正在尝试制作一个数据库系统。我目前拥有的是 Login Window。当您输入用户名和密码时,您应该转到另一个 window StudentInfoSystem 。我使用的代码非常基础和通用。

var info = new StudentInfoSystem.MainWindow();
info.Show();        
this.Close();

所以,这会做的是,在您按下登录按钮后,您会转到 StudentInfoSystem 并且登录 window 关闭。我对 Show() 的问题是它打开 window 并立即 returns,对吗?它不会等待新的 window 关闭。所以,我的问题是如何打开一个新的 window 并使用它?当我说工作时,我的意思是根据用户的角色等在我的文本框中显示信息(在新打开的 window 中)...

尝试 window.Activate() 聚焦新 window and/or [any element].Focus() 聚焦 window.

中的任何元素

我猜上面的代码在登录 Window 的按钮单击处理程序中,这将使登录 Window 成为 StudentInfoSystem window 的父级。
由于 WPF 将在关闭父级 window 时关闭父级和任何子级 window(s),因此您的 StudentInfo window 也将在调用

时关闭
this.Close();

一个选择可能是调用

this.Hide();

但没有看到您的应用程序的其余部分是如何设置的,不能 100% 确定这是最好的方法。

也许看到这些 SO 问题:

  1. wpf-create-sibling-window-and-close-current-one

  2. how-to-close-current-window-in-code-when-launching-new-window

据我了解,这应该可以满足您的要求:

info.ShowDialog();

您也可以查看 ShutdownMode 属性。我宁愿说,login window 是你想在登录后关闭的东西,但是做你想做的:)。 ShutdownMode 属性的用法:

public partial class App : Application
{
    protected override void OnStartup(StartupEventArgs e)
    {
        base.OnStartup(e);    
        this.ShutdownMode = System.Windows.ShutdownMode.OnLastWindowClose;
    }
}