Tengo un código en un constructor para un UserControl de WPF. Básicamente establezco un enlace a un XmlDataProvider (mis datos son dinámicos). Luego quiero configurar CustomSort en la vista para que sea un MySorter (implementando IComparer).CollectionViewSource.GetDefaultView devuelve nulo justo después de SetBinding
El problema es que GetDefaultView devuelve nulo si se llama directamente después de la llamada SetBinding, como si hubiera algún proceso asíncrono para configurar el ItemsSource. Tenga en cuenta que si llamo al mismo código GetDefaultView más tarde en un botón Click handler, funciona bien, no devuelve null y el mecanismo de clasificación funciona bien y dandy.
MyListBox.SetBinding(ListBox.ItemsSourceProperty, binding);
ListCollectionView view = CollectionViewSource.GetDefaultView(MyListBox.ItemsSource) as ListCollectionView;
view.CustomSort = new MySorter(); // falls over - view is null
Mi pregunta es, ¿por qué nula rentabilidad GetDefaultView cuando llama directamente después SetBinding, ¿hay un evento que necesito que esperar antes de que llame GetDefaultView y obtener una respuesta que no sea nulo?
Podría ayudar a saber dónde está el código? Quizás el enlace en sí sea 'nulo' en este punto. – user7116
Hice un error tipográfico en mi publicación original (ahora corregido), lo siento. El Users.ItemsSource en GetDefaultView es en realidad el mismo MyListBox que tiene el conjunto de enlaces en la primera línea. De ahí que el MyListBox.ItemsSource no sea nulo. – user1558012