c#数据网格绑定问题

本文关键字:绑定 问题 网格 数据网 数据 | 更新日期: 2023-09-27 17:54:56

EditVariationWindowModel edit = (EditVariationWindowModel)this.DataContext;
        var datagrid = dataGrid3;

        foreach (Variation variation in edit.SelQuestion.Variations)
        {
            foreach (var parameter in variation.QuestionParameters)
            {
                var binding = new Binding(parameter.Value);
                var column = new DataGridTextColumn();
                column.Header = parameter.Key.Name;
                column.Binding = binding;
                datagrid.Columns.Add(column);
            }
        }

所以这是我的代码在后面的代码为我的数据网格。我在wpf工作。

现在问题是什么:我只是得到一行,但许多重复的列标题(与正确的绑定),但正如你已经理解的,我不希望他们彼此相邻,但在彼此之下。例如:

not like this

header1 | header2 | header1 | header2|
string1 | string2 | string 1| string2|

,

 header1 | header2
 string1 | string2
 string1 | string2

有谁知道我怎么解决这个问题吗?

c#数据网格绑定问题

您必须先添加所有列,然后在添加数据时选择它们。

你所做的是添加一个绑定到一个新列。

编辑:

当我必须手动添加行时,我通常做的是:

1。-将dataccolumn添加到DataTable,将ColumnStyle添加到DataGrid,就像:

DataColumn fNameColumn8 = new DataColumn();
fNameColumn8.DataType = System.Type.GetType("System.String");
m_dataTable.Columns.Add(fNameColumn8);
ColumnStyle myStyleColumn8 = new ColumnStyle(7);
myStyleColumn8.TextAlign = ContentAlignment.TopRight;
DataGridTableStyle dataGridTableStyle = new DataGridTableStyle();
dataGridTableStyle.MappingName = MAPPINGNAME;
dataGridTableStyle.GridColumnStyles.Add(myStyleColumn8);
this.dataGrid.TableStyles.Add(dataGridTableStyle);

2。-指定映射名称和显示名称给dataGrid的ColumnStyles和DataTable的Columns:

m_dataTable.Columns[8].ColumnName = this.m_strHeader;
((DataGridTextBoxColumn)this.dataGrid.TableStyles[0].GridColumnStyles[8]).MappingName = this.m_strHeader;
((DataGridTextBoxColumn)this.dataGrid.TableStyles[0].GridColumnStyles[8]).HeaderText = this.m_strHeader;

3。—在DataGrid的ColumnStyles中指定列的宽度:

((DataGridTextBoxColumn)this.dataGrid.TableStyles[0].GridColumnStyles[8]).Width = 20;

4。-填充行:

DataRow dataRow = this.m_dataTable.NewRow();
dataRow[this.m_strHeader] = "DATA";
this.m_dataTable.Rows.Add(dataRow);

您正在为每一行添加列定义…WTF ?

这是一个关于如何将DataGrid绑定到Collection的不错的教程。

欢呼。基斯。


编辑:

foreach (var parameter in edit.SelQuestion.Variations.First().QuestionParameters)

来定义你的网格列…参见:第一个方法

然后(作为一个单独的步骤)通过迭代变量来填充数据网格…或者最好还是READ上面链接的文章,并将网格绑定到集合。不需要纠结于定义列和遍历每一行……网格可以自动完成所有这些