在 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。将其绑定到 Grid.ItemSource。

以上是关于在 WPF DataGrid 中手动添加行的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式将列和行添加到 WPF Datagrid

wpf datagrid 怎么增加数据行

如何动态添加/删除行? [WPF]

WPF中对datagrid删除选中的某一行。

easyUi datagrid怎样设置行高度

如何用代码选中datagrid中的某一行