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

如何在WPF DataGrid中水平展示List<int>的每个元素至独立单元格

解决方案

第一步:修改MainWindow.xaml

保留固定列(Num、Name),删除原有硬编码的Test相关列,修改后DataGrid部分代码如下:

<DataGrid AutoGenerateColumns="False"  Name="dataGrid" HorizontalAlignment="Left" Margin="10,10,10,10">
    <DataGrid.Columns>
        <DataGridTextColumn Binding="{Binding Num}" ClipboardContentBinding="{x:Null}" Header="Num" IsReadOnly="True" Width="50"/>
        <DataGridTextColumn Binding="{Binding Name}" ClipboardContentBinding="{x:Null}" Header="Name" IsReadOnly="True" Width="100"/>
    </DataGrid.Columns>
</DataGrid>

第二步:修改MainWindow.xaml.cs,增加动态生成列逻辑

在给DataGrid赋值ItemsSource后,根据第一行数据的Test_List长度动态生成对应数量的列,绑定List的索引位置,完整代码如下:

using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            List<CatModel> result = new List<CatModel>();
            result.Add(new CatModel(1, "AA", new List<int> { 1, 2, 3 }));
            result.Add(new CatModel(2, "BB", new List<int> { 4, 5, 6 }));
            result.Add(new CatModel(3, "CC", new List<int> { 7, 8, 9 }));

            this.dataGrid.ItemsSource = result;

            // 动态生成Test_List对应的列
            if (result.Count > 0)
            {
                int elementCount = result[0].Test_List.Count;
                for (int i = 0; i < elementCount; i++)
                {
                    DataGridTextColumn column = new DataGridTextColumn();
                    column.Header = $"Test_{i + 1}";
                    column.Binding = new Binding($"Test_List[{i}]");
                    column.IsReadOnly = true;
                    column.Width = new DataGridLength(1, DataGridLengthUnitType.Star);
                    this.dataGrid.Columns.Add(column);
                }
            }
        }
    }
}

实现说明

  • WPF的绑定语法原生支持集合索引器,{Binding Test_List[0]}可以直接取到Test_List中第1个元素的值
  • 动态列生成逻辑会根据第一行数据的List长度自动生成对应数量的列,只要所有行的List长度一致就能正常展示,符合支持任意数量元素的需求
  • 不需要修改CatModel的代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:06:03