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

WPF中DataGridCheckBoxColumn如何获取选中行?

如何获取WPF DataGrid中选中复选框行的指定列值?

你的问题核心在于DataGridCheckBoxColumn没有和DataTable的字段绑定,只是一个独立的UI控件,没法直接同步选中状态到数据源里。下面是具体的解决步骤:

步骤1:给DataTable添加复选框绑定字段

首先要在你的AppsAvailable这个DataTable里新增一个布尔类型的列,用来存储每行复选框的选中状态:

// 在设置ItemsSource之前执行这段代码
if (!AppsAvailable.Columns.Contains("IsSelected"))
{
    // 添加名为IsSelected的布尔列,默认值为false
    AppsAvailable.Columns.Add("IsSelected", typeof(bool));
}

步骤2:修改XAML绑定复选框列

把原来的DataGridCheckBoxColumn绑定到刚添加的IsSelected字段,这样勾选操作会直接同步到DataTable的行数据中:

<DataGrid Name="AvailableApps" Grid.Row="2" Grid.Column="2" Grid.ColumnSpan="2" Margin="5,30,5,5" ColumnWidth="*" CanUserDeleteRows="False" CanUserAddRows="False" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Application" Binding="{Binding Application}"/>
        <!-- 绑定到IsSelected字段,允许用户勾选 -->
        <DataGridCheckBoxColumn Header="Selection" Binding="{Binding IsSelected}" IsReadOnly="False"/>
    </DataGrid.Columns>
</DataGrid>

步骤3:调整原有C#代码

你原来的代码里把复选框列设为了IsReadOnly = true,这会导致用户无法勾选,需要改成false:

AvailableApps.ItemsSource = AppsAvailable.AsDataView();
AvailableApps.IsReadOnly = false;
// 取消复选框列的只读状态,让用户可以操作
AvailableApps.Columns[1].IsReadOnly = false;

步骤4:获取选中行的Application值输出到控制台

可以在某个触发事件(比如按钮点击)里遍历DataTable的行,筛选出IsSelected为true的行,取出Application列的值:

private void PrintSelectedApps_Click(object sender, RoutedEventArgs e)
{
    foreach (DataRow row in AppsAvailable.Rows)
    {
        // 检查该行是否被选中
        if ((bool)row["IsSelected"])
        {
            string appName = row["Application"].ToString();
            Console.WriteLine(appName);
        }
    }
}

如果你更愿意通过DataGrid的Items来遍历,也可以这么写:

foreach (DataRowView rowView in AvailableApps.Items)
{
    DataRow row = rowView.Row;
    if ((bool)row["IsSelected"])
    {
        Console.WriteLine(row["Application"].ToString());
    }
}

额外说明

不推荐通过遍历VisualTree找复选框控件的方式来获取选中状态,这种方法耦合UI结构,一旦DataGrid的布局或样式改变就会失效,而绑定数据源的方式更可靠、符合WPF的设计思想。

内容的提问来源于stack exchange,提问作者C. M.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:48:39