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

在WPF事件处理程序中操作对象数据的技术求助

嘿,我来帮你搞定这个D&D战斗追踪器的回合递增功能!首先咱们得先解决一个关键问题:你现在的CurrentSession是在构造函数里定义的局部变量,所以btnNextTurn_Button_Click方法根本访问不到它。接下来咱们一步步修改:

第一步:完善Session类,添加获取当前回合的属性

你的Session类目前只有递增回合的方法,但外部没法直接拿到当前的回合数,所以咱们加个只读属性来暴露它,顺便调整下方法名符合C#的命名规范:

namespace CombatTracker
{
    public class Session
    {
        private int turn = 1;
        
        // 暴露当前回合数给外部
        public int CurrentTurn => turn;

        // 把方法名改成PascalCase,符合C#编码习惯
        public int NextTurn()
        {
            return turn++;
        }
    }
}

第二步:调整MainWindow类,让Session实例全局可访问

把CurrentSession从构造函数的局部变量改成窗口类的私有成员,这样所有按钮事件都能调用它:

namespace CombatTracker
{
    public partial class MainWindow : Window
    {
        // 改成类的私有成员,让所有方法都能访问
        private Session _currentSession;

        public MainWindow()
        {
            InitializeComponent();
            _currentSession = new Session();
            // 初始化时就显示初始回合数(比如第1回合)
            UpdateTurnDisplay();
        }

        private void btnNewSession_Click(object sender, RoutedEventArgs e)
        {
            MainWindow newSession = new MainWindow();
            newSession.Show();
            Close();
        }

        private void btnNextTurn_Button_Click(object sender, RoutedEventArgs e)
        {
            // 调用Session的方法递增回合
            _currentSession.NextTurn();
            // 更新UI显示最新回合数
            UpdateTurnDisplay();
        }

        // 封装更新UI的方法,避免重复写代码
        private void UpdateTurnDisplay()
        {
            // 这里假设你有一个名为txtTurnCount的TextBlock用来显示回合数
            // 如果你的控件名字不一样,记得改成你实际用的控件名
            txtTurnCount.Text = $"当前回合: {_currentSession.CurrentTurn}";
        }
    }
}

第三步:确保XAML里有对应的显示控件

最后别忘了在你的MainWindow.xaml里添加一个用来显示回合数的控件,比如:

<!-- 显示回合数的TextBlock -->
<TextBlock x:Name="txtTurnCount" Margin="15" FontSize="18" FontWeight="Bold"/>
<!-- 下一回合按钮 -->
<Button x:Name="btnNextTurn" Content="下一回合" Click="btnNextTurn_Button_Click" Margin="15" Padding="10 5"/>

这样点击“下一回合”按钮时,不仅会递增Session里的回合变量,还会实时更新UI上显示的回合数啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 10:17:25