在Wpf应用程序中,我是通过套接字接收的对象集合。实际上,这个集合由Dictionary<Int, IMyObject>
组成,并且当在套接字上接收到对象时,它会定期填充/更新。
我有4个不同的ViewModel
来获取此集合的一个子集(我是一个MyObjectHolder,它是一个保存此项目的静态实例,我得到了它的一部分作为
public IList<MyObject> ListTypeOne
{
get
{
myList.Where(x => x.Type == myType)
}
}
每次插入/更新项目时,我都会在NotifyOfPropertyChanged
到TypeOne
的所有属性上发送TypeN
。
是否有更好的实施方式,我不明白?
我没有对它进行过多的压力测试,但是当我收集了大量的物品时,我不知道它是如何表现的。
答案 0 :(得分:1)
我不确定这是否是最佳解决方案,但这就是我要做的。
现在,有几种方法可以处理3号。其中一种方法是使用 Caliburn Micro的Event Aggregator 。你可以找到它here。
基本上,它的作用是允许您的ViewModel 订阅到一个事件。您的服务或更新您的收藏的任何内容将发布该活动,并且将调用所有订阅者。很酷,对吧?
这使您可以保持ViewModel的良好和解耦,这是MVVM喜欢的。
现在,我不是说你必须陷入困境并安装Caliburn Micro(如果你不这样做,我不会责怪你)。没有理由你不能实现自己的事件聚合器,哎呀,如果你使用正确的搜索术语,你可以找到大量的教程和示例代码。
就个人而言,我不是一个使用框架的忠实粉丝,它只是感觉很脏,但这取决于我个人的偏好。
但无论如何,试试看看对你有用的东西。