簡體   English   中英

修改項目的屬性時提高ObservableCollection中的CollectionChanged

[英]Raise CollectionChanged in ObservableCollection when an item's property is modified

我正在嘗試將ObservableCollection的LINQ查詢的結果綁定到我的UI,並且似乎將其運行一半。 如果將新項目添加到ObservableCollection ,則可以引發CollectionChanged並在該屬性上調用PropertyChanged,它將更新。 不幸的是,修改項目的屬性不會導致CollectionChanged觸發,而且我不知道如何觸發它。 我嘗試了其他方法發布的方法,例如TrulyObservableColection ,但沒有運氣。 有什么方法可以強制CollectionChanged觸發? 還是在這種情況下我可以采取另一條路線。 我寧願不必放棄LINQ。 任何意見,將不勝感激。

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)?

簡單修改項目后,如何獲得相同的結果(例如本例中的Workers EmployerID)?

您需要訂閱在每個工作程序上更改的屬性,並在結果集合上引發適當的PropertyChanged事件。

但是,另一個選擇是使用WPF的內置ICollectionView篩選,而不是公開單獨的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM