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

问题描述 投票:0回答:1
  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:

enter image description here

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

enter image description here

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

vb.net winforms observablecollection objectlistview
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.