在 WPF DataGrid 中手动添加行
Posted
技术标签:
【中文标题】在 WPF DataGrid 中手动添加行【英文标题】:Manually add rows in WPF DataGrid 【发布时间】:2011-08-26 01:39:32 【问题描述】:我有以下 XAML 代码:
<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
【问题讨论】:
【参考方案1】:如果您不想对数据网格进行数据绑定(即使在运行时),您可以按照这篇 SO 文章中的建议进行操作:
programmatically add column & rows to WPF Datagrid
基本上,您创建一个新行(在代码中)并用项目填充它,然后将其分配给您的网格。
正如 Henk 指出的那样,这不是一个很好的做法。如果这是一次性情况,则可能有理由这样做,但通常您应该通过更新基础数据源来处理它。以下是 Microsoft 的示例:
http://social.msdn.microsoft.com/Forums/en/wpf/thread/9b96a798-e185-4d90-ba73-afc35eb91643
【讨论】:
【参考方案2】:您不会向网格中添加行。
-
将网格绑定到列表(可观察集合)
将项目添加到该列表。
结果:新行显示在网格中。
【讨论】:
为什么不呢?我知道这不是正常使用,但可以做到。在某些情况下,将项目添加到列表不是首选的操作方法。 @Biggs:这些实例被称为意大利面条路。如果需要,请添加中间列表。控件不是数据结构。 @Henk Holterman - 是的,我想我只是想直接解决 OP 的问题,这在技术上是可行的。虽然您应该编辑底层数据结构而不是 UI 控件,但您是正确的。 谢谢,我确实考虑过一个列表,这将是一个选择,如何将列表编码为 3 列? 您需要一个具有 3 个属性的类和一个 ObservableCollection以上是关于在 WPF DataGrid 中手动添加行的主要内容,如果未能解决你的问题,请参考以下文章