J'ai du code dans un constructeur pour un UserControl WPF. Fondamentalement, je définis une liaison à un XmlDataProvider (mes données sont dynamiques). Je veux ensuite définir le CustomSort sur la vue pour être un MySorter (implémentant IComparer). Le problème est que GetDefaultView retourne null s'il est appelé directement après l'appel SetBinding - comme s'il y avait un traitement asynchrone qui se passe pour configurer l'ItemsSource. Notez que si j'appelle le même code GetDefaultView plus tard dans un bouton Click, le gestionnaire fonctionne correctement, il ne renvoie pas de valeur nulle et le mécanisme de tri fonctionne correctement.CollectionViewSource.GetDefaultView renvoie null juste après SetBinding
MyListBox.SetBinding(ListBox.ItemsSourceProperty, binding);
ListCollectionView view = CollectionViewSource.GetDefaultView(MyListBox.ItemsSource) as ListCollectionView;
view.CustomSort = new MySorter(); // falls over - view is null
Ma question est, pourquoi GetDefaultView return null lorsqu'il est appelé directement après SetBinding, est-il un événement que je dois attendre avant d'appeler GetDefaultView et obtenir une réponse non nulle?
Il peut être utile de savoir où ce code est? Peut-être que la liaison elle-même est "nulle" à ce stade. – user7116
J'ai fait une faute de frappe dans mon message original (maintenant corrigé), désolé. Le Users.ItemsSource dans le GetDefaultView est en fait le même MyListBox qui a l'ensemble de liaison dans la première ligne. Par conséquent pourquoi le MyListBox.ItemsSource devrait être non nul. – user1558012