WPF如何在运行时向DataGrid添加行,然后向这些行添加文本

时间:2017-10-30 21:36:38

标签: c# wpf visual-studio datagrid

我有一个DataGrid有三列(步骤编号,要求编号,说明)。运行应用程序后,用户应选择一个Excel电子表格,我将从此电子表格中提取信息以填入我的DataGrid。在我的代码中,我已经拥有了我需要的字符串,我只需要知道如何以编程方式添加一行,然后用这些字符串填充所述行。

继承我的DataGrid

 <DataGrid x:Name="dataGrid" Margin="10,167,11,10" 
 SelectionChanged="dataGrid_SelectionChanged" MinColumnWidth="22">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Step Number" />
            <DataGridTextColumn Header="Requirement" />
            <DataGridTextColumn Header="Description" Width="*" />
        </DataGrid.Columns>
    </DataGrid>

以下是我想要在其中创建行的循环:

 foreach (KeyValuePair<string, List<int>> Req in reqLocations)
  {
    //create row

    // ADD INFO FROM DICTIONARY INTO A ROW
  }

1 个答案:

答案 0 :(得分:1)

在同意评论后,如果您仍想查看....下面是您的XAML的简单示例

创建一个包含所有数据列标题的简单类

 public class dataGriditems
 {
    public string StepNumber { get; set; }
    public string Requirement { get; set; }
    public string Description { get; set; }             

 }

在XAML中为每列添加绑定,并确保绑定名称与类属性相同,您将作为项目源添加(在本例中为上面的类)

<DataGridTextColumn Header="Step Number" Binding="{Binding StepNumber}" />
<DataGridTextColumn Header="Requirement" Binding="{Binding Requirement}" />
<DataGridTextColumn Header="Description" Binding="{Binding Description}" Width="*" />

在XAML中为数据网格设置AutoGenerateColumns =“False”。

<DataGrid x:Name="dataGrid" Margin="10,167,11,10" 
 SelectionChanged="dataGrid_SelectionChanged" MinColumnWidth="22" AutoGenerateColumns="False">

在代码中,创建一个上面定义的类的简单对象列表,并将列表分配给dataGrid.ItemsSource,如下所示

List<dataGriditems> items = new List<dataGriditems>();

 items.Add(new dataGriditems() { StepNumber = "one", Requirement = "req1", Description = "desc1"});
 items.Add(new dataGriditems() { StepNumber = "two", Requirement = "req2", Description = "desc2" });
 items.Add(new dataGriditems() { StepNumber = "three", Requirement = "req3", Description = "desc3" });
 items.Add(new dataGriditems() { StepNumber = "four", Requirement = "req4", Description = "desc4" });

 dataGrid.ItemsSource = items;