我在 WPF UserControl 的构造函数中有一些代码。基本上我将绑定设置为 XmlDataProvider(我的数据是动态的)。然后我想将视图上的 CustomSort 设置为 MySorter(实现 IComparer)。
问题是,如果在 SetBinding 调用之后直接调用 GetDefaultView,则返回 null - 好像正在进行一些异步处理来设置 ItemsSource。请注意,如果我稍后在按钮 Click 处理程序中调用相同的 GetDefaultView 代码,它工作正常,它不会返回 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 响应之前我需要等待一个事件吗?