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

WPF中如何获取绑定DataGrid列的值并用于条件判断?

解决DataGrid获取绑定字段值并做条件格式化的问题

你现在的问题在于混淆了DataGrid列定义和数据实体:col1是DataGrid的列配置对象,它本身不存储具体数据,真正的Sale_Id_ass值在你绑定的BD_Payments_TBL集合的每个实体里。下面分几种场景给出解决方案:

场景1:遍历所有数据批量处理

如果要一次性检查所有数据的Sale_Id_ass值并做处理,可以先把数据源存为变量,直接遍历实体:

// 先把数据源存起来,方便后续遍历
var paymentData = context.BD_Payments_TBL.ToList();
General_Data_grid.ItemsSource = paymentData;
General_Data_grid.Columns.Clear(); 

var col1 = new DataGridTextColumn();
col1.Header = "Id";
col1.Binding = new Binding("Sale_Id_ass");

// 遍历每个数据实体获取Sale_Id_ass
foreach (var item in paymentData)
{
    int v = item.Sale_Id_ass; // 假设Sale_Id_ass是int类型
    if (v == 1)
    {
        // 这里可以对该数据项做预处理,比如修改字段值、标记状态等
    }
}

General_Data_grid.Columns.Add(col1);

场景2:DataGrid显示时针对每行做格式化

如果要在DataGrid渲染行的时候,根据Sale_Id_ass的值设置行/列样式(比如背景色、字体样式),推荐用LoadingRow事件:

var paymentData = context.BD_Payments_TBL.ToList();
General_Data_grid.ItemsSource = paymentData;
General_Data_grid.Columns.Clear(); 

var col1 = new DataGridTextColumn();
col1.Header = "Id";
col1.Binding = new Binding("Sale_Id_ass");

General_Data_grid.Columns.Add(col1);

// 绑定行加载事件,每行渲染时触发
General_Data_grid.LoadingRow += (sender, e) =>
{
    // 将行数据转为实体类型
    var paymentItem = e.Row.Item as BD_Payments_TBL;
    if (paymentItem != null && paymentItem.Sale_Id_ass == 1)
    {
        // 示例:设置该行背景色
        e.Row.Background = Brushes.LightGreen;
        // 也可以针对col1列设置单元格样式,比如修改字体颜色
        // 或者通过绑定转换器来控制列的显示格式
    }
};

场景3:获取选中行的字段值

如果要在用户选中某行后获取Sale_Id_ass值做判断,可以通过SelectedItem属性:

// 比如在按钮点击事件或SelectionChanged事件中
var selectedItem = General_Data_grid.SelectedItem as BD_Payments_TBL;
if (selectedItem != null)
{
    int v = selectedItem.Sale_Id_ass;
    if (v == 1)
    {
        // 执行你的格式化逻辑
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:43:14