繁体   English   中英

UI 在 BindingList<> 更改时不更新

[英]UI not updating when BindingList<> changes

我怀疑我是否会对此做出回应,但我已经无能为力了,所以希望如此。

我的表单上有一个BindingList<myObj>和一个BindingSource ,它的DataSource设置为 BindingList。 然后我有一个Resco Mobile Controls UIListView显示这些数据。

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

这一切都在带有 .NET CF 3.5 的 Windows CE 6 上。 任何想法都将不胜感激,因为我已经研究了一段时间了。

通常 BindingList 实现发生的事情是只通知添加和删除操作的更改,不会收到更新项目的通知。 我应该推荐使用 ObservableCollection 来通知项目更改。 类似的帖子在这里。 绑定列表和 UI 控件,未更新编辑问候,佩德罗·莫拉莱斯。

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

需要更新时调用:

bindingList.ResetBindings();

我将对此进行尝试,因为您可能不会获得大量流量。

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

CurrencyManager.Refresh()

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM