塑造可观察集合



我有一个非常简单的问题。

我得到了一些ViewModel的ObservableCollection(带有INotifyPropertyChanged),它经常更新。

现在我需要将数据塑造成一个新的 NewViewModel 的可观察集合,如下所示;

        var query = from o in _orders
                select new ComplexRowViewModel()
                           {Isin = o.Isin,
                            Name = o.Isin,
                            GermanSymbol = o.Exchange,
                            PrimarySymbol = o.State.ToString()};
        GridData = query;

但这当然不起作用。如果我使用 Obtics 或 CLINQ,如果新项进入第一个集合,新集合就会更新,但如果现有项的属性发生更改,则新集合中不会更新。

那么有什么想法吗?

我不知道 Obtics 或 CLINQ,但这听起来像是 ObservableCollection 的正常行为。它根本不会对它包含的单个项目的属性更改做出反应。因此,您必须编写自己的 ObservableCollection 实现。此处显示了一个示例:ObservableCollection,它还监视集合中元素的更改

你也应该从NewViewModel实现INotifyPropertyChange。在每个子订阅中,INotifyProperty更改源订单并正确引发新事件。

你也可以试试我的ObservableComputings库。使用该库:

        var query = _orders.Selecting(o => 
                new ComplexRowViewModel()
                           {Isin = o.Isin,
                            Name = o.Isin,
                            GermanSymbol = o.Exchange,
                            PrimarySymbol = o.State.ToString()};
        GridData = query;

要使上面的代码工作_orders应该是ObservableCollection类型,并且Order类(我建议它是_orders ObservableCollection中的元素类型)应该实现INotifyPropertyChanged

相关内容

  • 没有找到相关文章

最新更新