【问题标题】:Manually add rows in WPF DataGrid在 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

【问题讨论】:

    标签: c# wpf silverlight xaml 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】:

      您不会向网格中添加行。

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

      结果:新行显示在网格中。

      【讨论】:

      • 为什么不呢?我知道这不是正常使用,但可以做到。在某些情况下,将项目添加到列表不是首选的操作方法。
      • @Biggs:这些实例被称为意大利面条路。如果需要,请添加中间列表。控件不是数据结构。
      • @Henk Holterman - 是的,我想我只是想直接解决 OP 的问题,这在技术上是可行的。虽然您应该编辑底层数据结构而不是 UI 控件,但您是正确的。
      • 谢谢,我确实考虑过一个列表,这将是一个选择,如何将列表编码为 3 列?
      • 您需要一个具有 3 个属性的类和一个 ObservableCollection。将其绑定到 Grid.ItemSource。
      猜你喜欢
      • 2016-11-09
      • 1970-01-01
      • 2015-04-06
      • 1970-01-01
      • 2021-11-14
      • 2013-11-17
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多