Tôi có một số mã trong một hàm tạo cho một UserFrol WPF. Về cơ bản tôi thiết lập một ràng buộc với một XmlDataProvider (dữ liệu của tôi là năng động). Sau đó tôi muốn đặt CustomSort trên khung nhìn để trở thành MySorter (triển khai IComparer).CollectionViewSource.GetDefaultView trả về null ngay sau khi SetBinding
Vấn đề là GetDefaultView trả về null nếu được gọi trực tiếp sau cuộc gọi SetBinding - như thể có một số xử lý không đồng bộ đang diễn ra để thiết lập ItemsSource. Lưu ý rằng nếu tôi gọi cùng một mã GetDefaultView sau đó trong một nút Nhấn xử lý nó hoạt động tốt, nó không trả về null và cơ chế sắp xếp tất cả các công trình tốt và dandy.
MyListBox.SetBinding(ListBox.ItemsSourceProperty, binding);
ListCollectionView view = CollectionViewSource.GetDefaultView(MyListBox.ItemsSource) as ListCollectionView;
view.CustomSort = new MySorter(); // falls over - view is null
Câu hỏi của tôi là, tại sao không GetDefaultView trở lại null khi gọi trực tiếp sau khi SetBinding, là có một sự kiện tôi cần phải chờ đợi trước khi tôi gọi GetDefaultView và nhận được một phản ứng không null?
Nó có thể giúp để biết được nơi mã này là gì? Có lẽ bản thân ràng buộc là 'null' tại thời điểm này. – user7116
Tôi đã thực hiện một lỗi đánh máy trong bài viết gốc của mình (hiện đã được sửa), xin lỗi. Users.ItemsSource trong GetDefaultView thực sự là cùng một MyListBox có bộ ràng buộc trong dòng đầu tiên. Do đó tại sao MyListBox.ItemsSource không phải là null. – user1558012