如何在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)
}
答案 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
添加到的容器的名称。