我有一个数据库,其中有一个表记录来自各种来源的数据。 3 列
'来源' '值(value)' '时间戳'
例如
source1 21 '11:03'
source6 22 '11:03'
source9 456 '11:03'
该表每秒更新 2 到 3 次。 每个值可能会或可能不会更改。 每个“源”值都显示在屏幕上的单独标签或文本框中(而不是在网格中)。 我需要找到将这些数据绑定(bind)到 WPF 控件的最佳方法。 我应该用什么类型的对象来保存 Dictionary、DataTable 等中的数据。
什么类型的对象将保存数据? 如何将我的 Label 或 TextBox 绑定(bind)到该值。
我每秒查询 2 到 4 次资源。 绝大多数时候数据库表中的值不会改变 通常只有一个值发生变化 有时他们都会改变 我只希望拥有最多约 30 个独特的数据源。
请戴上你的思维帽。
最佳答案
碰巧我正在解决一个非常相似的问题。像我一样,我假设您正在后台线程中更新数据。
收藏
使用 MTObservableCollection 而不是 ObservableCollection 来存储数据。 ObservableCollection 通常用于可以更改的数据绑定(bind),但它不能从后台线程更新。 MTObservableCollection 对我有用,但它不是继承线程安全的,所以要小心。
http://www.julmar.com/blog/mark/2009/04/01/AddingToAnObservableCollectionFromABackgroundThread.aspx
模型
每个对象都应该实现 INotifyPropertyChanged 接口(interface)。这将使它们支持数据绑定(bind)。此外,WPF 允许您以这种方式在后台线程上更新属性。
http://msdn.microsoft.com/en-us/library/system.componentmodel.inotifypropertychanged.aspx
优先更新而不是清除和添加
确保在可能的时候总是更新对象。不要只是清除集合并重新加载它,这将非常昂贵并且会导致不利的 UI 效果。当然,您可以在需要时进行单独的添加和删除。
关于c# - WPF 高频数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2143951/