大佬,我在子程序增加了分钟的变量(如下图1),并设置分钟(如下图2),并利用AI帮我把代码更新为如下,但运行后提示分钟变量不存在(如下图3),您能帮我下怎么解决吗
图1:
图2:
图3:
代码:
// 定义 TimingFunction 类
public class TimingFunction
{
// 定义 TextBlock 控件
public TextBlock TextBoxControl;
// 定义倒计时分钟数
public int CountdownMinutes;
// 定义倒计时秒数
public int CountdownSeconds;
// 定义计时器
public DispatcherTimer dispatcherTimer;
// 构造函数,传入 Window 对象和数据上下文
public TimingFunction(Window win, IDictionary<string, object> dataContext)
{
// 获取上下文对象
var context = dataContext["context"] as IActionContext;
// 获取倒计时的分钟数和秒数
CountdownMinutes = Convert.ToInt32(context.GetVarValue("CountDownMinutes"));
CountdownSeconds = Convert.ToInt32(context.GetVarValue("CountDownSeconds"));
// 获取提示文本控件
TextBoxControl = (System.Windows.Controls.TextBlock)win.FindName("提示文本") as TextBlock;
// 获取窗口信息
var TextINT = context.GetVarValue("WindowInformation").ToString();
// 设置提示文本内容,格式为“分钟:秒”
TextBoxControl.Text = TextINT.Contains("{0}") ? string.Format(TextINT, CountdownMinutes.ToString() + ":" + CountdownSeconds.ToString()) : TextINT;
// 创建计时器对象
dispatcherTimer = new DispatcherTimer();
// 计时器事件处理函数
dispatcherTimer.Tick += (s, e) =>
{
// 如果秒数大于 0,递减秒数
if (CountdownSeconds > 0)
{
CountdownSeconds--;
}
// 如果秒数为 0 且分钟数大于 0,递减分钟数并将秒数重置为 59
else if (CountdownMinutes > 0)
{
CountdownMinutes--;
CountdownSeconds = 59; // 重置秒数为 59 当分钟递减时
}
// 更新上下文中的分钟数和秒数
context.SetVarValue("CountDownMinutes", CountdownMinutes);
context.SetVarValue("CountDownSeconds", CountdownSeconds);
// 获取窗口信息
TextINT = context.GetVarValue("WindowInformation").ToString();
// 更新提示文本内容,格式为“分钟:秒”
TextBoxControl.Text = TextINT.Contains("{0}") ? string.Format(TextINT, CountdownMinutes.ToString() + ":" + CountdownSeconds.ToString()) : TextINT;
// 当倒计时到达 00:00 时关闭窗口
if (CountdownMinutes == 0 && CountdownSeconds == 0) { win.Close(); };
};
// 设置计时器间隔为 1 秒(1000 毫秒)
dispatcherTimer.Interval = new TimeSpan(0, 0, 1);
// 启动计时器
dispatcherTimer.Start();
// 当窗口关闭时停止计时器
win.Closed += (s, e) => { dispatcherTimer.Stop(); };
}
}
// 窗口加载完成事件处理方法,传入 Window 对象、数据上下文和窗口上下文对象
public static void OnWindowLoaded(Window win, IDictionary<string, object> dataContext, ICustomWindowContext winContext)
{
// 创建 TimingFunction 对象,传入 Window 对象和数据上下文
new TimingFunction(win, dataContext);
}
你可以直接把这个步骤从子程序里拿出来,然后步骤多线程循环更新窗口信息这个变量,通过外部倒计时更改里面文本内容来实现
想了想,直接在子程序里更新变量似乎更方便些,不过原理都一样我那倒计时是时刻读取那个变量信息,变量更改,窗口里文本也会变
你大小写不一致
成功了,感谢大佬