【问题标题】:Add items to datagrid programmatically以编程方式将项目添加到数据网格
【发布时间】:2019-01-03 14:08:09
【问题描述】:

我在 WPF/VB.NET 中添加了一个数据网格,设法在代码中创建列,但我不知道如何向数据网格添加行。

 Private Sub button_Click(sender As Object, e As RoutedEventArgs) Handles button.Click
    Dim c1 As New DataGridTextColumn()
    c1.Header = "Šifra"
    c1.Width = 100
    c1.Binding = New Binding("Šifra")
    gridRacun.Columns.Add(c1)

    Dim c2 As New DataGridTextColumn()
    c2.Header = "Naziv artikla"
    c2.Width = 500
    c2.Binding = New Binding("Naziv artikla")
    gridRacun.Columns.Add(c2)

    Dim c3 As New DataGridTextColumn()
    c3.Header = "Količina"
    c3.Width = 100
    c3.Binding = New Binding("Količina")
    gridRacun.Columns.Add(c3)

    Dim c4 As New DataGridTextColumn()
    c4.Header = "Cijena"
    c4.Width = 100
    c4.Binding = New Binding("Cijena")
    gridRacun.Columns.Add(c4)


End Sub

如何将字符串添加到每列的数据网格中,字符串是 4 个标签的内容,这些标签会发生变化,单击按钮时我希望将 label1.content 设置为 column1,将 lebel2.content 设置为 column2 等?

【问题讨论】:

  • gridRacun.Items.Add(myItem); 呢?
  • 我将如何创建 myItem? @michip96
  • myItem 必须是包含所有绑定的公共属性的类的对象。例如,您可以将绑定添加到c1,如下所示:c1.Binding = New Binding("Name")。那么对象 myItem 应该有一个公共属性Name,如果您将项目添加到gridRacun,该值将显示在c1 列中。
  • 如果你愿意,我也可以给你一个例子。 @RaceLt
  • 我试图弄清楚如何创建可以添加到网格的对象。它不工作。 :) 如果可以,请做,谢谢@michip96

标签: wpf vb.net


【解决方案1】:

您可以通过创建一个包含项目值的类来将自定义项目添加到 DataGrid:

Class Item
    Private _name As String

    Property Name() As String
        Get
            Return _name
        End Get
        Set(ByVal value As String)
            Me._name = value
        End Set
    End Property
    //Some other properties
End Class

现在您可以像这样创建 DataGrid 列:

Dim myColumn As New DataGridTextColumn()

myColumn.Header = "Name"
myColumn.Binding = New Binding("Name")

dataGrid.Columns.Add(myColumn)

您现在可以通过向 DataGrid 添加项目来添加行:

Dim item = New Item With {.Name = "Terry Adams"}
dataGrid.Items.Add(item)

我希望这会有所帮助。

【讨论】:

  • 这样只会添加空行。可能是我做错了什么,会检查更多。
  • 这是我在 console.write(item) 时得到的:System.Windows.Data Error: 40 : BindingExpression path error: 'Sifra' property not found on 'object' ''Item' (HashCode=22466860)'. BindingExpression:Path=Sifra; DataItem='Item' (HashCode=22466860); target element is 'TextBlock' (Name=''); target property is 'Text' (type 'String')
  • 由于这篇文章,我编辑了我的答案:stackoverflow.com/a/34921647/2601107 在 VB.net 中,绑定系统正在寻找属性而不是属性。所以你需要设置一个属性,如上所示。关于您的错误消息,您的 Item 类中是否有一个名为 Sifra 的属性?
  • 完美运行...非常感谢。我将开始进一步研究。你是一颗宝石
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-03
  • 2013-12-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多