WPF C#技术求助:Page内按钮无法关闭当前窗口,仅能打开主窗口
问题解决:点击Page按钮后关闭当前AuthWindow并打开MainWindow
错误原因
你当前的代码里,AuthWindow AuthView = new AuthWindow();是新建了一个AuthWindow实例,不是当前正在显示的登录窗口。调用这个新实例的Close()方法,只会关闭刚创建的、从未显示过的窗口,自然无法关闭你正在使用的AuthWindow。
解决方案
要关闭当前承载Page的AuthWindow,你需要获取到这个窗口的实际实例,而不是新建一个。推荐使用Window.GetWindow(this)方法,它能找到包含当前Page的顶级窗口:
修改按钮点击事件代码如下:
private void LoginBtn_Click(object sender, RoutedEventArgs e) { // 打开新的主窗口 MainWindow MainView = new MainWindow(); MainView.Show(); // 获取当前承载Page的窗口(即AuthWindow)并关闭 Window currentAuthWindow = Window.GetWindow(this); currentAuthWindow?.Close(); }
补充说明
Window.GetWindow(this)中的this指代当前的Page对象,该方法会遍历控件树,找到最顶层的窗口实例。- 使用
?.空值运算符是为了避免空引用异常,确保找到窗口后再执行关闭操作。
内容的提问来源于stack exchange,提问作者Adtapum Mayomthong
相关产品推荐
相关产品推荐

