当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在WPF中显示动态数据的好方法是什么?》经验,为你挑选了1个好方法。

我正在努力处理具有动态数据更新的WPF应用程序的最佳方法.我应该使用WPF提供的丰富数据绑定吗?

我将在下面的讨论中尽可能简化我的问题域,并简要提一些解决方案.我对这个社区可以提供的任何评论都很感兴趣.

简化的问题域:假设你有1000项,每一个独特的"系统名称 "和动态的" 速度 "和" 位置 ".这些项目的数据每秒更新60次.您希望这些数据显示在各种UI的用户-一切从图形化的拨号/平方米/仪表/ ETC"显示数字标签".WPF的完美工作 - 将视觉效果与应用程序的其余部分分开.你会如何设计这个系统?

我的第一个解决方案:我的第一个解决方案是定义一个名为" DataItem "的具有速度和位置属性(双精度)的对象,定义一个带有name属性(string)的接口.显示数据的控件必须实现名称接口,创建了一个"DataManager",用于扫描实现接口的FrameworkElements,在初始化时为列表构建名称/ FrameworkElements对.然后,每秒60次,更新1,000个DataItem的列表,并将每个匹配的FrameworkElement的DataContext设置为DataItem对象.这是有效的,性能是可以接受的(特别是如果数据并不总是在变化).

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

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

现在,我正在研究Microsoft Research发布的CodePlex"动态数据显示"项目.该项目完全是关于绘制/绘制动态数据的,但可能会有一些想法.所以我在StackOverflow上 - 通常是一个简短问题和快速答案的地方.:-)

我是WPF的新手,非常感谢任何人对这些问题的看法.请记住,此处指定的问题域已经简化,因此我需要一个强大的解决方案.实际上有许多不同类型的数据对象,每个对象具有不同的属性; 并且每个对象的数据更新速率不同,UI控件显示单个项目和项目组,数据来自多个来源,等等.



1> Scott Weinst..:

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

首先 - 让你的DataItem实现INotifyPropertyChanged或让它们从DispatchingObject你想要绑定的每个值派生并实现依赖属性

第二 - 将所有DataItem保存在其中一个ObservableCollection或DataTable中.您需要一个支持INotifyCollectionChanged或的集合IBindingList.

第三 - 使用某种容器控件(列表框,第三层网格控件等)将DataItem列表绑定到您的应用程序

第四 - 定义一个DataTemplate给每个DataItem一个视觉外观

五-如果需要的话,可以使用DataTemplateSelector动态选择的DataTemplate对于不同种类的DataItem的小号

这里有一小段xaml可以帮助您入门


推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有