我試圖將一個ObservableCollection
的LINQ查詢的結果綁定到我的用戶界面,我似乎有一半的工作。如果我向ObservableCollection
添加新項目,我可以引發CollectionChanged並在屬性上調用PropertyChanged並更新。不幸的是,修改一個項目的屬性不會導致CollectionChanged觸發,我無法弄清楚如何使它觸發。我嘗試過其他人發佈的方法,例如TrulyObservableColection,但沒有運氣。有沒有辦法強制CollectionChanged啓動?或者在這種情況下我可以採取另一條路線。我寧願不必放棄LINQ。任何意見,將不勝感激。當一個項目的屬性被修改時引發CollectionChanged在ObservableCollection
private ObservableCollection<Worker> _workers = new ObservableCollection<Worker>();
public ObservableCollection<Worker> Workers
{
get { return _workers; }
}
public IEnumerable<Worker> WorkersEmployed
{
get { return GameContainer.Game.Workers.Where(w => w.EmployerID == this.ID); }
}
GameContainer.Game.Workers.CollectionChanged += Workers_CollectionChanged;
private void Workers_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
RaisePropertyChanged(() => WorkersEmployed);
}
這個作品呈現新的條目添加到集合中。當一個項目被簡單修改時(如本例中的Workers'EmployerID),我怎麼能達到同樣的結果?
工作者通過MVVM Light實現'Observable Object'。 –
@ReedCopsey我想,OP想要的是自動查看WorkerEmployed集合上的EmployerID的更改(例如[Linq to ObservableCollection](http://linq2obscollection.codeplex.com/)或[Bindable LINQ](http: //bindablelinq.codeplex.com/))。 –
我可能不得不再次查看「ICollectionView」。我前一段時間對它進行了探索,但從我記憶中,我從未找到過自動刷新的方法。我正在尋找更「放手」的方法。但是,如果有自動更新/自動刷新ICollectionView的方法,請告訴我。我會在心跳中轉向那個。 –