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

如何在WPF DataGrid中以编程方式添加List<double>作为列(无绑定)

手动构建WPF DataGrid(无绑定)实现需求

嘿,我懂你要的效果——纯代码方式给WPF DataGrid生成对应列和行,完全不用绑定,还得处理不同长度子列表的空单元格问题对吧?咱直接上可行的解决方案!

第一步:XAML准备

首先确保你的DataGrid关闭自动生成列,并且命名方便后台代码访问:

<Window x:Class="YourNamespace.YourWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="DataGrid Demo" Height="450" Width="800">
    <Grid>
        <DataGrid x:Name="TargetDataGrid" AutoGenerateColumns="False" />
    </Grid>
</Window>

第二步:后台代码实现

在窗口的Loaded事件或者合适的地方写入以下代码,逻辑很清晰:

  1. 先定义你的集合:
List<List<double>> collection = new List<List<double>> { 
    new List<double>() {1.5, 2.5, 3.5}, 
    new List<double>() {1.5, 2.5}, 
    new List<double>() {1.5, 2.5, 3.5, 4.5} 
};
  1. 手动创建列,数量对应集合里的子List个数:
// 为每个子集合创建一列
for (int colIdx = 0; colIdx < collection.Count; colIdx++)
{
    var textColumn = new DataGridTextColumn
    {
        Header = $"列 {colIdx + 1}", // 设置列头
        Width = DataGridLength.Auto // 自动适配宽度
    };
    TargetDataGrid.Columns.Add(textColumn);
}
  1. 计算最大行数(取最长子List的长度),然后逐行创建单元格:
// 确定需要生成的总行数
int maxRowCount = collection.Max(subList => subList.Count);

for (int rowIdx = 0; rowIdx < maxRowCount; rowIdx++)
{
    var newRow = new DataGridRow();
    
    // 为当前行生成每个列对应的单元格
    foreach (var subList in collection)
    {
        var cell = new DataGridCell();
        // 检查当前行索引是否在子列表范围内,超出则显示空字符串
        cell.Content = rowIdx < subList.Count ? subList[rowIdx].ToString() : string.Empty;
        newRow.ItemCollection.Add(cell);
    }
    
    // 将行添加到DataGrid中
    TargetDataGrid.Items.Add(newRow);
}

关键细节说明

  • 关闭自动生成列:必须把AutoGenerateColumns设为False,不然会和我们手动创建的列冲突
  • 空单元格处理:通过判断行索引是否小于子List的长度,来决定显示数值还是空字符串
  • 动态行列数:列数由外层集合的元素个数决定,行数由最长的子List长度决定,完全适配你的集合结构

如果之后需要调整样式(比如单元格对齐、字体),可以给DataGridCell添加样式资源,或者直接设置cell.Style属性就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:39:54