首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在WPF中显示动态数据的好方法是什么?

在WPF中显示动态数据的好方法是什么?
EN

Stack Overflow用户
提问于 2008-12-13 16:16:37
回答 1查看 4.5K关注 0票数 8

我很难找到最好的方法来处理具有动态数据更新的WPF应用程序。我是否应该使用WPF提供的丰富数据绑定?

在下面的讨论中,我将尽可能地简化我的问题域,并简要地提到一些解决方案。我对这个社会所能提供的任何意见都很感兴趣。

简化问题域:假设您有一个拥有大约1,000个条目的系统,每个条目都有一个唯一的“名称”,以及一个动态的“速度”和“位置”。这些项的数据每秒更新60倍。您希望在各种UI中向用户显示这些数据--从“显示数字的标签”到图形刻度盘/米/量规/等等。这是WPF的完美工作--将可视化与应用程序的其他部分分开。你将如何设计这个系统?

我的第一个解决方案:我的第一个解决方案是定义一个具有速度和位置属性(双倍)的对象,称为“DataItem”,定义一个具有名称属性(string)的接口。显示数据的控件必须实现名称接口,创建了一个“DataManager”,用于扫描实现该接口的FrameworkElements,在初始化时生成一个名称/框架工作元素对列表。然后,每秒60次更新1,000 DataItems的列表,并将每个匹配FrameworkElement的DataContext设置为DataItem对象。这是可行的,性能是可以接受的(特别是如果数据并不总是在变化的话)。

我的第二个解决方案解决了第一个解决方案中的UI控件都必须实现一些接口- yuk的问题。我想使用开箱即用的未经修改的WPF控件(在某些情况下)。因此,第二个解决方案是定义一个“附加属性”(我把它放在DataManager对象上),这样您就可以在xaml中做一些类似的事情

代码语言:javascript
复制
<Label DataManager.Name = "objectname"  Content="{Binding}" />

不知何故,这个解决办法似乎仍然不正确。我的第三个解决方案是研究如何实现自定义DataSourceProvider。我没有成功。我无法了解数据源提供程序模型,以及在这种情况下如何使用它。

现在,我正在查看由Microsoft发布的CodePlex“动态数据显示”项目。这个项目的全部内容是绘制/绘制动态数据,但可能会有一些想法。所以我现在在StackOverflow上--通常是一个简短的问题和快速回答的地方。:-)

我对WPF非常陌生,希望大家对这些问题有任何想法。请记住这里指定的问题域是简化的,所以我需要一个健壮的解决方案。实际上有许多不同类型的数据对象,每个对象都有不同的属性;每个对象的数据更新速度不一样,UI控件显示单个项和项组,数据来自多个源,等等。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-12-13 17:08:35

你快到了。您希望在两个级别上进行数据绑定。

首先-让您的_DataItem_s实现INotifyPropertyChanged,或者让它们从DispatchingObject派生,并实现要绑定到的每个值的依赖项属性。

第二,将所有的_DataItem_s保存在ObservableCollection<DataItem>或DataTable中。您需要一个支持INotifyCollectionChangedIBindingList的集合。

第三,使用某种容器控件(列表框、第三部分网格控件等)将_DataItem_s列表绑定到应用程序。

第四,定义一个DataTemplate,以使每个_DataItem_s都具有直观的外观。

第五,如果需要,可以使用DataTemplateSelector动态地为不同类型的_DataItem_s选择DataTemplate。

这里有一个最小的xaml来让你开始

代码语言:javascript
复制
<ListBox ItemsSource="{Binding ...}" ItemTemplateSelector="{StaticResource DTSelector}">
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/365378

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档