具有ObservableCollection的DataSource的DataListView不显示新添加的对象

  1. 使用一个按钮和一个DataListView创建的表单。

  2. 将此代码添加到表单中:

    Dim dummies As New ObservableCollection(Of Dummy)

    Private Sub Form1_Load(sender As Object,e As EventArgs) Handles MyBase.Load
        dlvDummies.DataSource = dummies
    End Sub

    Private Sub Button1_Click(sender As Object,e As EventArgs) Handles Button1.Click
        dummies.Add(New Dummy(Now.ToLongTimeString()))
    End Sub

    Class Dummy
        Public Property X As String
        Sub New(x As String)
            Me.X = x
        End Sub
    End Class
  1. 运行该应用程序,然后按一下按钮。在调试器中,我可以清楚地看到一个新条目添加到ObservableCollection中,并相应地添加到DataListView .Objects:

具有ObservableCollection的DataSource的DataListView不显示新添加的对象

  1. 该项目永远不会出现在GUI中(是的,在设计时,DataListView的唯一列已使用方面名称“ X”设置。)

具有ObservableCollection的DataSource的DataListView不显示新添加的对象

这实际上是我在一个较大的应用程序中遇到的问题的粗俗再现。 https://stackoverflow.com/a/30157854/2112855中给出的答案暗示这应该“有效”。这是缺陷还是我自己的用户错误?

wcj789 回答:具有ObservableCollection的DataSource的DataListView不显示新添加的对象

使用固定的BindingList(Of foo)替换ObservableCollection(Of foo),或者解决此问题。

根据https://sourceforge.net/p/objectlistview/discussion/812923/thread/ab0d6208/的讨论,我认为https://stackoverflow.com/a/30157854/2112855中被接受的答案是错误的,应该对其进行编辑。

本文链接:https://www.f2er.com/2812765.html

大家都在问