【问题标题】:How to show list values in a datagrid?如何在数据网格中显示列表值?
【发布时间】:2015-03-10 08:31:36
【问题描述】:

这可能是一个新手问题。

我想在DataGrid 中显示一些信息。这不必是双向绑定,我只需要将DataGrid 显示为输出。该信息存储在由List(Of String) 项组成的List 中。 List(Of String) 项目是一整行,其中该列表中的每个 String 项目将进入 DataGrid 中自己的列。

那么最简单的方法是什么?

我试图做这样的事情:
创建了DataGrid

    <DataGrid x:Name="MyDataGrid" AutoGenerateColumns="True" ItemsSource="{Binding}" Margin="24,17,144,37">
    </DataGrid>

通过向第一个列表添加一些数据来创建“行”条目:

    Dim MyEntryList As New List(Of String)

    MyEntryList.Add("SomeName")
    MyEntryList.Add("SomeInfo")
    MyEntryList.Add("SomeStuff")

将创建的“行”列表添加到包含列表中:

    Dim MyDataList As New List(Of List(Of String))

    MyDataList.Add(MyEntryList)

最后尝试设置我的DataGrid的来源:

    Me.MyDataGrid.ItemsSource = MyDataList

DataGrid 显示了一些描述容量和计数的数字,而不是这些字符串:

如何让它显示列表的内容?

【问题讨论】:

  • 计算你的列表值
  • 您应该考虑,为此使用DataTable(单向绑定或只读数据网格)msdn.microsoft.com/de-de/library/…
  • 你想如何在数据网格中显示 List(Of List(Of String))?
  • @Ganesh 假设列表 A 由多个列表 B 组成,而这些列表 B 又由字符串组成。请记住,每个列表 B 都为数据网格的每个单独行保存数据。列表 B 中的每个字符串都将保存数据网格每一列的值。列表 A 将是“行”的集合。
  • 你能不能给一张你想要达到的目标的图片..

标签: wpf vb.net wpfdatagrid


【解决方案1】:

您应该尝试构建一些对象或数据表来填充数据网格。参考下面的代码

 <DataGrid x:Name="MyDataGrid" AutoGenerateColumns="True" >
    </DataGrid>

Imports System.Collections.ObjectModel
        Class MainWindow

        Private Sub Window_Loaded(sender As Object, e As RoutedEventArgs)

            Dim lst As New ObservableCollection(Of SomeObject)
            For index = 1 To 10
                Dim obj As New SomeObject
                obj.SomeName = "test" + index.ToString
                obj.SomeInfo = "info" + index.ToString
                lst.Add(obj)
            Next
            MyDataGrid.ItemsSource = lst
        End Sub
    End Class

    Class SomeObject
        Private name As String
        Public Property SomeName() As String
            Get
                Return name
            End Get
            Set(ByVal value As String)
                name = value
            End Set
        End Property
        Private info As String
        Public Property SomeInfo() As String
            Get
                Return info
            End Get
            Set(ByVal value As String)
                info = value
            End Set
        End Property

    End Class

【讨论】:

  • 感谢您的回答。但我不能用这个。为此,我必须提前知道所有属性(在编译时)。我没有。我需要能够添加具有以前未知属性的项目。例如,假设我有带有“SomeName”和“SomeInfo”的对象,但是在运行时我需要能够添加新属性,而我在编译时并不知道。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-21
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多