c# - WPF 高频数据绑定(bind)

标签 c# wpf data-binding binding

我有一个数据库,其中有一个表记录来自各种来源的数据。 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/

相关文章:

c# - 我怎样才能让一个类(class)单独负责创建和提供对另一个类(class)的访问

c# - 以编程方式将证书添加到个人商店

wpf - 如何在 Composite WPF 中将按键与 DelegateCommand 相关联?

wpf - WPF 绑定(bind)属性 Path 和 XPath 是否互斥?

c# - 如何在 wpf 数据网格中绑定(bind)组合框?

c# - 如何将 Tuple<..> 重构为具有描述性名称的类型化类?

c# - 可轻松与 C# 和 .NET 一起使用的 winforms 替代品

c# - System.Environment.Exit(0) 防止 hockeyapp 注册崩溃

c# - WPF:将转换器应用于 ItemsSource

c# - 绑定(bind)命令的正确方法