Vâng, tôi đang bối rối.Việc liên kết với các bộ sưu tập thực sự hiệu quả như thế nào?
Nếu điều khiển của tôi có thuộc tính phụ thuộc ItemsSource
của IEnumerable
loại và người dùng liên kết bộ sưu tập với đối tượng nào tôi có trong DependencyPropertyChangedEventArgs.NewValue
?
Theo như tôi biết CollectionView
được tạo hoàn toàn cho các bộ sưu tập và tôi mong đợi args.NewValue
là loại ICollectionView
.
Từ this blog:
Khi người dùng liên kết với một tài sản WPF để một tập hợp các dữ liệu, WPF tự động tạo ra một cái nhìn để bọc các bộ sưu tập, và liên kết với các tài sản để xem, không phải là nguyên bộ sưu tập. Hành vi này luôn xảy ra và độc lập với CollectionViewSource.
Nhưng trình gỡ lỗi (VS 2012, .net v.4.0) cho tôi biết rằng tôi nhận được bộ sưu tập nguyên gốc ở NewValue
. (BindsDirectlyToSource không được thiết lập và bằng false theo mặc định)
Làm thế nào điều này có thể được ?!
Tôi không thể hiểu cách thức trong trường hợp này, WPF kiểm soát hỗ trợ sắp xếp, nhóm và lọc.
Cách thức và thời điểm CollectionView được tiêm và sử dụng như thế nào?
Vì vậy, điều này có nghĩa là quyền kiểm soát của tôi ĐÃ yêu cầu CollectionView để thu thập thông qua và không có hỗ trợ nhóm, lọc và sắp xếp ra khỏi hộp. Đó là trách nhiệm của kiểm soát để thực hiện chức năng nói trên, phải không? –
Có hỗ trợ out-of-the-box để nhóm, lọc và sắp xếp khi bạn liên kết rõ ràng với [CollectionViewSource] (http://msdn.microsoft.com/en-us/library/system.windows.data.collectionviewsource .aspx). Xem "Cách tạo chế độ xem" trong [Binding to Collections] (http://msdn.microsoft.com/en-us/library/ms752347.aspx#binding_to_collections) – Clemens
Vâng, có vẻ như có. GroupItem được tạo ra bởi ItemsControl chính nó ... –