如何在C#WPF中以编程方式创建DataGrid?

时间:2016-05-23 16:46:05

标签: c# wpf datagrid

如何在C#WPF中以编程方式创建DataGrid? 我可以使用信息生成多个 DataGrids - 具体取决于用户选择的内容

例如:

if(true)
{
  // Create a DataGrid programatically
  DataGrid DG = new DataGrid();
  DG.ColumnHeader 1 = "Name"
  DG.ColumnHeader 2 = "Age"

  // Load info to the datagrid from somewhere
  // Add under Name column the name "Fred" and "Tom"
  // Add under Age column "26" and "18"
  DG.FieldNameColumn.Row1 = "Fred"
  DG.Age.Row1 = "26"
  DG.FieldNameColumn.Row2 = "Tom"
  DG.Age.Row2 = " 18"
}
else
{
  // dont generate a DG ( don't do anything here)
}

1 个答案:

答案 0 :(得分:2)

您熟悉MVVM吗?我建议你这样做"对"方式并创建一个关联的ViewModel,其中包含项目的集合。然后DataGrid将绑定到该项集合。

但是,为了回答你的问题,你可以通过以下方式完成你想要的事情:

  private void Button_Click(object sender, RoutedEventArgs e)
    {
        var nameBinding = new Binding("Name")
        {
            Mode = BindingMode.Default,
            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
        };

        var ageBinding = new Binding("Age")
        {
            Mode = BindingMode.Default,
            UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
        };

        var dataGrid = new DataGrid();
        dataGrid.Columns.Add(new DataGridTextColumn
        {
            Header = "Name",
            Binding = nameBinding
        });
        dataGrid.Columns.Add(new DataGridTextColumn
        {
            Header = "Age",
            Binding = ageBinding
        });
        dataGrid.ItemsSource = new ObservableCollection<Info>
        {
            new Info
            {
                Name = "Name 1",
                Age = "100"
            }
        };

        MainGrid.Children.Add(dataGrid);
    }

    public class Info
    {
        public string Name { get; set; }
        public string Age { get; set; }
    }

注意 MainGrid是您要将DataGrid添加到的容器的名称。