2011-05-15 64 views
6

添加行,我有以下XAML代码:手动在WPF的DataGrid

<sdk:DataGrid Margin="58,8,52,18" Name="dataGridTickets"> 
    <sdk:DataGrid.Columns> 
     <sdk:DataGridTextColumn x:Name="ticketNoColumn" Header="Ticket No." IsReadOnly="True" Width="SizeToHeader"/> 
     <sdk:DataGridTextColumn x:Name="seatRowColumn" Header="Seat Row" IsReadOnly="True" Width="SizeToHeader"/> 
     <sdk:DataGridTextColumn x:Name="seatNumberColumn" Header="Seat Number" IsReadOnly="True" Width="SizeToHeader"/> 
    </sdk:DataGrid.Columns> 
</sdk:DataGrid> 

我想以编程方式进入手动数据到网格,我怎么能做到这一点?

感谢

工作液

Programatically add rows in a WPF DataGrid

回答

8

你没有行一个网格中添加。

  1. 绑定网格到一个List(观察的集合)
  2. 将项目添加到该列表。

结果:新行出现在网格中。

+5

为什么不呢?我知道这不是正常的使用,但可以完成。可能会出现将项目添加到列表中不是首选操作方法的情况。 – IAmTimCorey 2011-05-15 21:48:11

+7

@Biggs:那些实例被称为意大利面条路。如果必须添加中间列表。控制不是数据结构。 – 2011-05-15 21:50:06

+0

@亨克霍尔特曼 - 真的,我想我只是试图直接解决OP的问题,这在技术上是可行的。你是对的,但你应该编辑底层数据结构而不是UI控件。 – IAmTimCorey 2011-05-15 21:55:42

6

如果你不想数据绑定数据网格(即使在运行时),你可以按照这个意见SO文章:

programmatically add column & rows to WPF Datagrid

基本上你创建一个新的行(代码)和用项目填充它,然后将其分配给您的网格。

像Henk指出的那样,这不是一个很好的做法。如果这是一次性的情况,可能有理由,但一般而言,您应该通过更新基础数据源来处理它。这里有一个来自微软的例子:

http://social.msdn.microsoft.com/Forums/en/wpf/thread/9b96a798-e185-4d90-ba73-afc35eb91643