Ho un codice in un costruttore per un UserControl WPF. Fondamentalmente ho impostato un legame con un XmlDataProvider (i miei dati sono dinamici). Quindi voglio impostare CustomSort sulla vista per essere un MySorter (implementando IComparer).CollectionViewSource.GetDefaultView restituisce null solo dopo SetBinding
Il problema è che GetDefaultView restituisce null se chiamato direttamente dopo la chiamata SetBinding - come se ci fosse qualche elaborazione asincrona in corso per impostare ItemsSource. Nota che se chiamo più tardi lo stesso codice GetDefaultView in un pulsante Click handler funziona bene, non restituisce null e il meccanismo di ordinamento funziona perfettamente e dandy.
MyListBox.SetBinding(ListBox.ItemsSourceProperty, binding);
ListCollectionView view = CollectionViewSource.GetDefaultView(MyListBox.ItemsSource) as ListCollectionView;
view.CustomSort = new MySorter(); // falls over - view is null
La mia domanda è, perché nulla GetDefaultView ritorno quando ha chiamato subito dopo SetBinding, c'è un evento che ho bisogno di aspettare prima che chiami GetDefaultView e ottenere una risposta non nullo?
Potrebbe essere utile sapere dove questo codice? Forse il legame stesso è "null" a questo punto. – user7116
Ho fatto un refuso nel mio post originale (ora corretto), mi dispiace. User.ItemsSource in GetDefaultView è in realtà lo stesso MyListBox con l'insieme di rilegature nella prima riga. Quindi perché MyListBox.ItemsSource dovrebbe essere non nullo. – user1558012