forza bruta:
- Collegare gestore per ogni evento PropertyChanged per ogni elemento figlio
- Afferra il ListCollectionView dal CollectionViewSource
- chiamata Aggiorna.
EDIT:
Il codice per 1, 2 vivrebbe nel code-behind.
per # 1, devi fare qualcosa di simile:
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**
....
}
}
Per 2 #, nel gestore CollectionChanged, si potrebbe fare qualcosa di simile:
private void _SomeItem_PropertyChanged(object sender, PropertyChangedEventArgs e)
{
ListCollectionView lcv = (ListCollectionView)(CollectionViewSource.GetDefaultView(theListBox.ItemsSource));
lcv.Refresh();
}
EDIT2: Tuttavia, in In questo caso, vorrei fortemente suggerisco di controllare anche ListCollectionView.NeedsRefresh e aggiornare solo se è impostato. Non c'è motivo di riordinare se le tue proprietà sono cambiate e non influenzano l'ordinamento.
è così, siete vincolante vostro OC ad una casella di riepilogo e avere il sortdescription sulla casella di riepilogo? – apandit
Questo è corretto. Quando viene modificata una proprietà di un elemento figlio, desidero che l'ordinamento rifletta questa modifica. – Nate