WPF UserControl のコンストラクターにいくつかのコードがあります。基本的に、XmlDataProvider へのバインディングを設定します (私のデータは動的です)。次に、ビューの CustomSort を MySorter (IComparer を実装) に設定します。
問題は、GetDefaultView が SetBinding 呼び出しの直後に呼び出された場合に null を返すことです。あたかも ItemsSource をセットアップするために何らかの非同期処理が行われているようです。同じ GetDefaultView コードを後でボタン Click ハンドラーで呼び出すと、正常に動作し、null が返されず、並べ替えメカニズムがすべて正常に動作することに注意してください。
MyListBox.SetBinding(ListBox.ItemsSourceProperty, binding);
ListCollectionView view = CollectionViewSource.GetDefaultView(MyListBox.ItemsSource) as ListCollectionView;
view.CustomSort = new MySorter(); // falls over - view is null
私の質問は、GetDefaultView が SetBinding の直後に呼び出されたときに null を返すのはなぜですか? GetDefaultView を呼び出して null 以外の応答を取得する前に待機する必要があるイベントはありますか?