C#以编程方式添加到DataGrid控件会导致空白列
这是我第一次使用C#DataGrid控件(也是我的第一个C#项目之一),我很难用编程方式填充DataGrid控件。每次我添加一行和两列时,它们都是空的 XAML代码C#以编程方式添加到DataGrid控件会导致空白列,c#,.net,datagrid,C#,.net,Datagrid,这是我第一次使用C#DataGrid控件(也是我的第一个C#项目之一),我很难用编程方式填充DataGrid控件。每次我添加一行和两列时,它们都是空的 XAML代码 <DataGrid ItemsSource="{Binding}" x:Name="resultsDataGrid" HorizontalAlignment="Left" Margin="10,454,0,0" VerticalAlignment="Top" Height="199" Width="499">
<DataGrid ItemsSource="{Binding}" x:Name="resultsDataGrid" HorizontalAlignment="Left" Margin="10,454,0,0" VerticalAlignment="Top" Height="199" Width="499">
<DataGrid.Columns>
<DataGridTextColumn Header="Url"/>
<DataGridTextColumn Header="404"/>
</DataGrid.Columns>
</DataGrid>
我一直在看示例,我可以看到您必须绑定到数据集/数据库/源,但当我以编程方式添加这些时,我不知道如何做到这一点?我做错了什么?DataGrid有一个名为
AutoGenerateColumns
的属性,默认为true。这将自动为每个属性创建一列,标题为属性名称。但是,因为您使用的是匿名类型,所以没有属性名。这就是你的空白栏的来源
解决方案是将AutoGenerateColumns=“False”
添加到
参数中。尝试以下操作:
XAML代码:
<Grid Height="396" Name="grid1" Width="565">
<DataGrid AutoGenerateColumns="False" Height="170" HorizontalAlignment="Left" Margin="12,85,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="541" />
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="12,37,0,0" Name="button1" VerticalAlignment="Top" Width="75" Click="button1_Click" />
</Grid>
CS代码:
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
// Add Columns to the dataGrid
DataGridTextColumn c1 = new DataGridTextColumn();
c1.Header = "Person ID";
c1.Binding = new Binding("ID");
c1.Width = 110;
dataGrid1.Columns.Add(c1);
DataGridTextColumn c2 = new DataGridTextColumn();
c2.Header = "First Name";
c2.Width = 110;
c2.Binding = new Binding("FirstName");
dataGrid1.Columns.Add(c2);
DataGridTextColumn c3 = new DataGridTextColumn();
c3.Header = "Last Name";
c3.Width = 110;
c3.Binding = new Binding("LastName");
dataGrid1.Columns.Add(c3);
// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White" });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith" });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang" });
// Pass the data to the dataGrid
dataGrid1.ItemsSource = myData;
//// OR
//dataGrid1.Items.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "Weir" });
//dataGrid1.Items.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith" });
//dataGrid1.Items.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang" });
// Modify a cell
((Person)dataGrid1.Items[1]).LastName = "Schmidt";
}
}
public class Person
{
public int ID { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
}
}
命名空间WpfApplication1
{
///
///MainWindow.xaml的交互逻辑
///
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
私有无效按钮1\u单击(对象发送者,路由目标)
{
//向dataGrid添加列
DataGridTextColumn c1=新DataGridTextColumn();
c1.Header=“个人ID”;
c1.绑定=新绑定(“ID”);
c1.宽度=110;
dataGrid1.Columns.Add(c1);
DataGridTextColumn c2=新的DataGridTextColumn();
c2.Header=“名字”;
c2.宽度=110;
c2.绑定=新绑定(“名字”);
dataGrid1.Columns.Add(c2);
DataGridTextColumn c3=新的DataGridTextColumn();
c3.Header=“姓氏”;
c3.宽度=110;
c3.绑定=新绑定(“姓氏”);
dataGrid1.Columns.Add(c3);
//创建数据
List myData=new List();
添加(newperson(){ID=5,FirstName=“Jamie”,LastName=“White”});
添加(newperson(){ID=10,FirstName=“Mike”,LastName=“Smith”});
添加(newperson(){ID=25,FirstName=“Joe”,LastName=“Yang”});
//将数据传递到dataGrid
dataGrid1.ItemsSource=myData;
////或
//dataGrid1.Items.Add(newperson(){ID=5,FirstName=“Jamie”,LastName=“Weir”});
//dataGrid1.Items.Add(newperson(){ID=10,FirstName=“Mike”,LastName=“Smith”});
//dataGrid1.Items.Add(newperson(){ID=25,FirstName=“Joe”,LastName=“Yang”});
//修改单元格
((个人)dataGrid1.Items[1]).LastName=“Schmidt”;
}
}
公共阶层人士
{
公共int ID{set;get;}
公共字符串名{set;get;}
公共字符串LastName{set;get;}
}
}
感谢您的输入,但不幸的是,这似乎不起作用。
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button1_Click(object sender, RoutedEventArgs e)
{
// Add Columns to the dataGrid
DataGridTextColumn c1 = new DataGridTextColumn();
c1.Header = "Person ID";
c1.Binding = new Binding("ID");
c1.Width = 110;
dataGrid1.Columns.Add(c1);
DataGridTextColumn c2 = new DataGridTextColumn();
c2.Header = "First Name";
c2.Width = 110;
c2.Binding = new Binding("FirstName");
dataGrid1.Columns.Add(c2);
DataGridTextColumn c3 = new DataGridTextColumn();
c3.Header = "Last Name";
c3.Width = 110;
c3.Binding = new Binding("LastName");
dataGrid1.Columns.Add(c3);
// Create the Data
List<Person> myData = new List<Person>();
myData.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "White" });
myData.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith" });
myData.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang" });
// Pass the data to the dataGrid
dataGrid1.ItemsSource = myData;
//// OR
//dataGrid1.Items.Add(new Person() { ID = 5, FirstName = "Jamie", LastName = "Weir" });
//dataGrid1.Items.Add(new Person() { ID = 10, FirstName = "Mike", LastName = "Smith" });
//dataGrid1.Items.Add(new Person() { ID = 25, FirstName = "Joe", LastName = "Yang" });
// Modify a cell
((Person)dataGrid1.Items[1]).LastName = "Schmidt";
}
}
public class Person
{
public int ID { set; get; }
public string FirstName { set; get; }
public string LastName { set; get; }
}
}