将GridView绑定到筛选的共享字典

时间:2015-04-17 19:44:56

标签: c# wpf

在WPF项目中,我有一个名为OrderHoder的共享类,它是simething as

Dictionary<int,OrderBase> OrderList {get;set;}

该字典通过TCP连接和基于超级插件的库实时填充新数据,更新,删除等。

我有4种不同的视图,它们根据特定类型的OrderBase显示Gridview

 public class ForeignOrders: OrderBase
{ omiss}

我希望每个gridview根据OrderBase中定义的属性从OrderHolder获取数据,因此对于ForeignView我只有ForeignOrder类型的项目

对于初始加载,我没有问题,因为我使用LINQ查询来提取数据

OrderList.Select(x=>x.Type == "foreign").ToList()

但这导致了一个问题:我无法了解OrderList修改的方式。

有没有办法可以对Dictionary进行投影,以便我可以捕获更新/插入/删除?

在你问之前我不能只使用一个List,因为我必须知道更新/删除要更改的项目,我不能做

var idx = OrderList.IndexOf(x=>x.Id = 1234)
OrderList.ElementAt(idx) = [newItem]

我忘了说它是在使用caliburn micro的WPF应用程序

1 个答案:

答案 0 :(得分:1)

持有OrderList的班级必须实施INotifyPropertyChanged

然后,每次更改控件的字典时,都必须调用控股类的OnPropertyChanged方法,以便知道字典实际发生了变化并且必须刷新它的显示。< / p>

为了让您的子类了解OrderList修改,您只需要让他们订阅PropertyChanged持有者类的OrderList事件