You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WPF多窗口数据传递问题:分数计数跨窗口同步失败求助

解决WPF多窗口间静态分数变量不更新显示的问题

嘿,我看了你遇到的问题——静态变量存分数在Question1里能正常更新,但切换到Question3后标签没显示正确数值,咱们一步步来排查解决:

最可能的核心问题:事件未绑定

你的后台代码里写了Question3_Load方法,但WPF不会自动把窗口的Loaded事件和这个方法关联起来,也就是说这段赋值分数的代码根本没执行!

解决步骤:绑定Question3的Loaded事件

打开Question3的XAML文件,找到根节点的Window标签,手动添加Loaded事件绑定:

<Window x:Class="Maths_Quiz.Question3"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Question3" Height="450" Width="800"
        Loaded="Question3_Load"> <!-- 就是这行! -->
    <!-- 你的窗口内容 -->
</Window>

这样当Question3窗口加载时,才会触发后台的Question3_Load方法,把静态变量里的分数赋值给lblScore。

额外的验证与优化建议

  1. 确认静态变量的有效性:你在Question1里已经验证过MyGlobals.Score能正确累加,静态字段默认初始值为0,这部分逻辑没问题。
  2. 更灵活的状态管理(可选):如果以后需要扩展更多共享状态,或者希望分数变化时自动通知UI更新,可以把静态变量改成带属性封装的形式,甚至用单例ViewModel替代静态类,更符合WPF的MVVM设计思想:
public static class MyGlobals
{
    private static int _score;
    public static int Score
    {
        get => _score;
        set 
        {
            _score = value;
            // 以后如果需要通知UI,可以在这里加事件触发逻辑
        }
    }
}

内容的提问来源于stack exchange,提问作者canna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:55:28