【问题标题】:Bindable LINQ libraries or "why Obtics is not actively maintained anymore"可绑定的 LINQ 库或“为什么不再积极维护 Obtics”
【发布时间】:2013-02-08 03:31:09
【问题描述】:

最终任务是:将一些 WPF 控件绑定到 LINQ 查询。

在搜索“可绑定 LINQ”后,我发现了对 ObticsBindable LinqContinuous LINQ 的多个引用。他们做我想做的事,但有一件事让我感到困惑:他们的年龄。似乎他们的开发几乎在 2009-2010 年的某个时间停止了,这很可疑。

使用它们仍然合理吗?它们最终不是被某些标准库方式所取代吗?

【问题讨论】:

  • 为什么你需要任何图书馆?你在做一些框架吗?
  • @sll 我想制作一个视图模型,它聚合来自两个可观察集合的数据,例如 from a in A join b in B on a.id equals b.id select new VM(a, b)
  • 两个集合中的对象是否属于同一类型?
  • @sll 不幸的是,不同 - 这就是拥有虚拟机的原因......
  • 使用LINQ Zip() 方法聚合两个集合。我仍然不确定你的问题是什么

标签: c# .net linq binding


【解决方案1】:

经过更多研究:

  1. 我找到了OLinq。它得到维护并且非常实用。缺少一些 Linq 操作,但它在设计上相当可扩展。
  2. 我还没有看到任何提及这种解决方案的好坏。看起来很不常见。

【讨论】:

  • 我仍然在制作中使用 Obtics...你能相信吗?我真的很喜欢 IValueProvider 和 ExpressionObserver...OLinq 可以像 Obtics 一样观察任意表达式吗?
  • @DmitryGusarov 您可以将您的知识分享为一个完整的答案 =) 我对 Obtics 了解不多,所以我不确定如何回答您的问题。 FWIW,OLinq 基本上是对Linq 的重新实现,还缺少一些操作(我个人缺少joins)。
【解决方案2】:

让我介绍一下我的图书馆ObservableComputations。它是可用于将 WPF 控件绑定到类似查询的 LINQ 的生产就绪库。

【讨论】:

    【解决方案3】:

    您正在寻找的是Reactive Extensions (Rx.Net)。 为了使用 WPF MVVM,有一个名为 ReactiveUI 的库。

    然后您可以使用ReactiveList 而不是ObservableCollection 并在该列表上定义您的linq 查询。

    代码形成他们的文档:

    DocumentList = new ReactiveList<Document>() {
        ChangeTrackingEnabled = true,
    };
    
    DocumentList.ItemChanged
        .Where(x => x.PropertyName == "IsDirty" && x.Sender.IsDirty)
        .Select(x => x.Sender)
        .Subscribe(x => {
            Console.WriteLine("Make sure to save {0}!", x.DocumentName);
        });
    

    【讨论】:

      猜你喜欢
      • 2011-02-08
      • 2010-10-09
      • 2014-08-11
      • 1970-01-01
      • 2010-09-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-05
      相关资源
      最近更新 更多