C# BindingList时未更新UI<&燃气轮机;变化
我怀疑我是否能得到这样的回应,但我已经不知所措了,希望如此 我的表单上有一个C# BindingList时未更新UI<&燃气轮机;变化,c#,.net,compact-framework,bindinglist,C#,.net,Compact Framework,Bindinglist,我怀疑我是否能得到这样的回应,但我已经不知所措了,希望如此 我的表单上有一个BindingList和一个BindingSource,它的DataSource设置为BindingList。然后,我有一个ui列表视图显示此数据 启动时,它显示得很好,数据绑定正确,但当我更新任何数据时,它永远不会显示在UI中。我在myObj上实现了inotifypropertychange,不知道我还应该寻找什么 这一切都是在WindowsCE6和.NETCF3.5上完成的。如果您有任何想法,我将不胜感激,因为我已经
BindingList
和一个BindingSource
,它的DataSource
设置为BindingList。然后,我有一个ui列表视图
显示此数据
启动时,它显示得很好,数据绑定正确,但当我更新任何数据时,它永远不会显示在UI中。我在myObj
上实现了inotifypropertychange
,不知道我还应该寻找什么
这一切都是在WindowsCE6和.NETCF3.5上完成的。如果您有任何想法,我将不胜感激,因为我已经看了一段时间了。我将尝试一下,因为您可能不会获得大量的流量 您是否尝试过获取CurrencyManager并调用其刷新方法?见下文:
通常,BindingList实现只会通知添加和删除操作的更改,而不会在项目更新时收到通知。我建议使用ObservableCollection来通知项目更改。 这里也有类似的帖子。
尊敬的Pedro Morales。我通过修改主线程中的集合解决了这个问题,如果我从次线程中更改集合,则更改不会在网格中更新。(甚至调用currencyManager刷新或DataGrid刷新)需要更新时调用:
bindingList.ResetBindings();
结合这里的几个答案,我找到了我的解决方案。如果您不在UI线程上,则需要使用调用来调用UI线程上的刷新
Public Sub RefreshMyBoundList()
If (Me.InvokeRequired) Then
Me.Invoke(New Action(AddressOf RefreshMyBoundList))
Return
End If
MyBoundList.ResetBindings()
End Sub
你是不是碰巧从WPF背景进入了CF上的WinForms?是的,但我使用WinForms的数量相当可观,只是没有CF…谢谢,我可能错了,但我不认为,
observeCollection
是.NET CF中的一个选项。。。。