DataListView with DataSource of ObservableCollection 不显示新添加的对象
DataListView with DataSource of ObservableCollection does not display newly added objects
创建了具有单个按钮和单个 DataListView 的表单。
将此代码添加到表单中:
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
- 运行 应用程序,按下按钮。在调试器中,我可以明显地看到一个新条目添加到 ObservableCollection 并相应地添加到 DataListView .Objects:
- 项目从未出现在 GUI 中(是的,DataListView 的唯一列在设计时已经设置了方面名称 "X"。)
这实际上是我在一个更大的应用程序中遇到的问题的简单再现。 中给出的答案暗示这应该 "just work"。这是缺陷还是我的用户错误?
用 BindingList(Of foo) 替换 ObservableCollection(Of foo) 已修复,或者更确切地说是解决了这个问题。
我认为,根据在 https://sourceforge.net/p/objectlistview/discussion/812923/thread/ab0d6208/ that the accepted answer in 看到的讨论是错误的,应该进行编辑。
创建了具有单个按钮和单个 DataListView 的表单。
将此代码添加到表单中:
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
- 运行 应用程序,按下按钮。在调试器中,我可以明显地看到一个新条目添加到 ObservableCollection 并相应地添加到 DataListView .Objects:
- 项目从未出现在 GUI 中(是的,DataListView 的唯一列在设计时已经设置了方面名称 "X"。)
这实际上是我在一个更大的应用程序中遇到的问题的简单再现。
用 BindingList(Of foo) 替换 ObservableCollection(Of foo) 已修复,或者更确切地说是解决了这个问题。
我认为,根据在 https://sourceforge.net/p/objectlistview/discussion/812923/thread/ab0d6208/ that the accepted answer in