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

WPF使用foreach遍历CheckBox计算勾选服务总价的问题求助

问题原因

现有代码存在4个核心错误:

  • 临时变量temp定义在foreach循环内部,每次遍历CheckBox都会被重置为0,累加逻辑完全失效
  • 代码中没有存储每个CheckBox对应的服务定价,无法区分不同选项对应的金额,无法完成累加
  • WPF的CheckBox选中状态属性为IsChecked而非Checked,属性写错会导致选中判断失效
  • WPF中容器的子控件集合属性是Children而非Controls,属性写错会导致遍历不到目标控件

实现方案

1. 绑定服务定价

给每个CheckBox的Tag属性赋值对应服务的价格,XAML示例如下:

<GroupBox x:Name="servicesGroupBox" Header="可选服务">
    <StackPanel>
        <CheckBox Content="基础服务(10$)" Tag="10"/>
        <CheckBox Content="增值服务(20$)" Tag="20"/>
    </StackPanel>
</GroupBox>

2. 修正累加逻辑

将统计变量放到循环外部,遍历所有CheckBox读取选中状态和对应价格累加即可:

int totalPrice = 0;
// 用OfType<CheckBox>过滤非复选框控件,避免类型转换异常
foreach (CheckBox c in servicesGroupBox.Children.OfType<CheckBox>())
{
    if (c.IsChecked == true)
    {
        totalPrice += Convert.ToInt32(c.Tag);
    }
}
// totalPrice即为最终总价,赋值给对应展示控件即可
serviceRate = totalPrice;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:54:00