动态向 GridView 中的列添加数据

Dynamically add data to columns in GridView

我有以下代码在 WPF GridView 控件中动态创建列,header 名称来自存储在 List<string[]> 中的 string[] data_org

GridView gv = tabell.View as GridView;

foreach (string s in data_org.ElementAt(0))
{
   gv.Columns.Add(new GridViewColumn { Header = s });
}

有没有办法在我创建列时添加数据?我在添加列语句中搜索了执行此操作的方法,但找不到方法。

gv.Columns.Add(new GridViewColumn{Header = s, **statement to add data to column**});

我的数据存储在另一个 List<float[]> 中,其中每个项目 float[] 代表一列。我是否也必须做一些事情来处理该数据类型 (float[])?

您不会将数据项直接添加到 GridView 的列中。相反,您设置关联 ListViewItemsSource,在您的情况下是 tabell

tabell.ItemsSource = /* Set a binding or assign an items collection. */;

然后您将为每一列创建绑定到您的数据项的相应属性,这些属性应该使用 DisplayMemberBinding.

显示在列中
var gridViewColumn = new GridViewColumn
{
   Header = s,
   DisplayMemberBinding = new Binding(/* Binding property path / name of the property. */);
};

由于每列只有 float 的列表,因此您应该首先创建合适的数据项类型。 ItemsSource 需要一个包含每列属性的项目列表,它代表一行。

你现在要做的是:

  • 创建包含每列属性的行数据类型

    public class MyDataItem
    {
       public float Number { get; }
    
       // ...properties for other columns..
    }
    
  • 使用浮动列表中的数据创建这些数据项的集合。

    var myDataItemList = new List<MyDataItem>();
    // ...create data items, add your data and add the items to the list.
    
  • 将列表指定为 ListView 的项目源。

    tabell.ItemsSource = myDataItemList;
    
  • 为每列添加显示成员绑定。

    var gridViewColumn = new GridViewColumn
    {
       Header = s,
       DisplayMemberBinding = new Binding(nameof(MyDataItem.Number));
    };
    

那么应该可以了。但是,我建议你看看 MVVM 设计模式。