当BindingList<>时,UI不会更新变化

时间:2014-03-04 17:14:27

标签: c# .net compact-framework bindinglist

我怀疑自己是否因此而得到了回复,但是我的机智已经结束了,所以希望能有所作为。

我的表单上有BindingList<myObj>BindingSource,其中DataSource设置为BindingList。然后我有Resco Mobile Controls UIListView显示此数据。

在启动时它显示正常,数据被正确绑定,但是当我更新任何数据时,它永远不会在UI中显示。我在INotifyPropertyChanged上实施了myObj,并且不知道我还应该寻找什么......

这完全在Windows CE 6上使用.NET CF 3.5。任何想法都会受到赞赏,因为我已经看了一段时间了。

5 个答案:

答案 0 :(得分:2)

通常,BindingList实现会发生的事情是只通知添加和删除操作的更改,不会在更新项目时收到通知。我应该建议使用ObservableCollection来通知项目更改。 这里有类似的帖子。 Binding List and UI controls, not updating on edit 此致,佩德罗莫拉莱斯。

答案 1 :(得分:1)

因为你可能没有获得大量的流量,所以我会采取措施。

您是否尝试过获取CurrencyManager并调用其刷新方法?请参阅以下内容:

CurrencyManager.Refresh()

答案 2 :(得分:1)

我解决了从主线程修改集合的问题,如果我从辅助线程更改它,则更改不会在网格中更新。 (甚至调用currencyManager Refresh或DataGrid Refresh)

答案 3 :(得分:0)

需要更新时致电:

bindingList.ResetBindings();

答案 4 :(得分:0)

将这里的一些答案结合起来,使我想到了解决方案。如果您不在UI线程上,则需要使用Invoke来调用UI线程上的刷新。

Public Sub RefreshMyBoundList()
    If (Me.InvokeRequired) Then
        Me.Invoke(New Action(AddressOf RefreshMyBoundList))
        Return
    End If
    MyBoundList.ResetBindings()
End Sub