订阅集合中集合的很好的 Rx 方式

本文关键字:集合 方式 Rx 很好 | 更新日期: 2023-09-27 17:59:32

我将描述我的对象模型,然后描述我想做什么。

它是一个 Silverlight 应用程序,这些是绑定到 UI 元素的模型对象。

协议具有TradingBranch的集合,可以添加或删除分支。分支具有产品集合。

agreement.Branches
         .SelectMany(x => x.Products)
         .Distinct()

这些集合由分支和产品矩阵驱动。相同的产品可以由多个分支选择,因此具有独特性。

从本质上讲,我想让用户从已选择为可用于任何分支的所有产品的列表中选择。我希望在矩阵发生变化时更新此列表。

因此,不必为分支添加 CollectionChanged 处理程序,然后添加更多处理程序来侦听 Products 集合,确定产品是否已经存在,然后在删除分支时必须取消订阅等,我希望有一些不错的 Rx 语法我可以简单地说 - "听这段 LINQ"并更新我绑定 ListBox 的其他可观察集合,当它变化。

订阅集合中集合的很好的 Rx 方式

尽管名称相似,IObservable 和 ObservableCollection 完全不相关,不幸的是也不兼容。他们有两种截然不同的观察收藏的模型。

看看可绑定的 LINQ。它尝试定义 LINQ-to-ObservableCollection,以便对 ObservableCollection 的 LINQ 查询再次生成 ObservableCollection。不过,该项目似乎已经死了,我还没有使用推荐的替代品(Obtics(。

试试我的 ObservableComputings 库:

agreement.Branches
         .SelectingMany(x => x.Products)
         .Distincting()

agreement.BranchesProducts应为类型 INotifyCollectionChanged(可观察集合(。