Shapeing ObservableCollection

问题描述 投票:0回答:3

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

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

现在我需要像这样将数据整形为NewViewModel的新ObservableCollection;

        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一样,如果第一个集合中有新项目,则新集合会被更新,但是如果现有项目的属性发生变化,则新集合中不会更新它。

有什么想法吗?

c# wpf viewmodel observablecollection
3个回答
0
投票

您也应该从INotifyPropertyChange实现NewViewModel。在每个子分类中,源订单上的INotifyPropertychange都会正确地引发一个新事件。


1
投票

我不了解Obtics或CLINQ,但这听起来像ObservableCollection的正常行为。 not对它所包含的单个项目的属性更改做出反应。因此,您必须编写自己的ObservableCollection实现。这里显示一个示例:ObservableCollection that also monitors changes on the elements in collection


0
投票

您也可以尝试ObservableComputations。使用该库:

        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。

© www.soinside.com 2019 - 2024. All rights reserved.