lực lượng Brute:
- Đính kèm handler cho mỗi sự kiện PropertyChanged cho mỗi mục con
- Grab các ListCollectionView từ CollectionViewSource bạn
- Gọi Refresh.
EDIT:
mã cho 1, 2 sẽ sống trong bạn code-behind.
Đối # 1, bạn muốn làm điều gì đó như:
private void Source_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
switch (e.Action)
{
case NotifyCollectionChangedAction.Add:
foreach(SomeItem item in e.NewItems)
{
item.PropertyChanged += new PropertyChangedEventHandler(_SomeItem_PropertyChanged);
}
break;
....
**HANDLE OTHER CASES HERE**
....
}
}
Đối # 2, trong handler CollectionChanged bạn, bạn sẽ làm điều gì đó như:
private void _SomeItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
ListCollectionView lcv = (ListCollectionView)(CollectionViewSource.GetDefaultView(theListBox.ItemsSource));
lcv.Refresh();
}
EDIT2: Tuy nhiên, trong trường hợp này, tôi sẽ mạnh mẽ đề nghị bạn cũng kiểm tra ListCollectionView.NeedsRefresh và chỉ làm mới nếu được đặt. Không có lý do gì để sắp xếp lại nếu các thuộc tính của bạn đã thay đổi mà không ảnh hưởng đến sắp xếp.
Vì vậy, bạn đang ràng buộc OC của bạn vào một Listbox và có sortdescription trên listbox? – apandit
Đúng vậy. Khi một thuộc tính của một mục con được thay đổi, tôi muốn loại phản ánh thay đổi này. – Nate