C# 向GridView中的列动态添加数据

C# 向GridView中的列动态添加数据,c#,wpf,listview,gridview,C#,Wpf,Listview,Gridview,我有以下代码可以在WPFGridView控件中动态创建列,标题名称来自字符串[],该字符串存储在列表中名为数据组织 GridView gv = tabell.View as GridView; foreach (string s in data_org.ElementAt(0)) { gv.Columns.Add(new GridViewColumn { Header = s }); } 在我创建列时有没有添加数据的方法?我在addcolumn语句中搜索了一些方法,但找不到方法 gv.

我有以下代码可以在WPF
GridView
控件中动态创建列,标题名称来自
字符串[]
,该字符串存储在
列表中
名为
数据组织

GridView gv = tabell.View as GridView;

foreach (string s in data_org.ElementAt(0))
{
   gv.Columns.Add(new GridViewColumn { Header = s });
}
在我创建列时有没有添加数据的方法?我在addcolumn语句中搜索了一些方法,但找不到方法

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

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

您不需要将数据项直接添加到
GridView
的列中。相反,您可以设置关联的
ListView
ItemsSource
,在您的案例中,它是
tabell

tabell.ItemsSource = /* Set a binding or assign an items collection. */;
然后,使用
displaymberbinding
为数据项上的每个列创建对应属性的绑定,这些属性应显示在列中

var gridViewColumn = new GridViewColumn
{
   Header = s,
   DisplayMemberBinding = new Binding(/* Binding property path / name of the property. */);
};
由于每个列只有一个
float
s列表,因此应该首先创建一个合适的数据项类型。
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.
    
  • 为每列添加显示成员绑定

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

那么它应该会起作用。不过,我建议您看看MVVM设计模式。

非常感谢!我的问题是,我不知道运行前的列数。我只知道它们是花车。所以,就我所知,创建一个基于行的类,其中每个属性表示一个列是不可能的?
var gridViewColumn = new GridViewColumn
{
   Header = s,
   DisplayMemberBinding = new Binding(nameof(MyDataItem.Number));
};