我有一个非常简单的问题。
我得到了一些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一样,如果第一个集合中有新项目,则新集合会被更新,但是如果现有项目的属性发生变化,则新集合中不会更新它。
有什么想法吗?
您也应该从INotifyPropertyChange
实现NewViewModel
。在每个子分类中,源订单上的INotifyPropertychange都会正确地引发一个新事件。
我不了解Obtics或CLINQ,但这听起来像ObservableCollection的正常行为。 not对它所包含的单个项目的属性更改做出反应。因此,您必须编写自己的ObservableCollection实现。这里显示一个示例:ObservableCollection that also monitors changes on the elements in collection
您也可以尝试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。