Tôi muốn làm điều gì đó mà tôi nghĩ sẽ rất đơn giản. Tôi muốn ràng buộc một EntityCollection Entity Framework được tạo ra với một DataGrid WPF. Tôi cũng muốn lưới này có thể sắp xếp được.Entity Framework 4.0 Databinding với phân loại không hoạt động
Tôi đã thử tất cả mọi thứ để thực hiện điều này, bao gồm cả việc sử dụng CollectionViewSource. Tuy nhiên, không có gì có vẻ hiệu quả. Sử dụng CollectionViewSource bình thường xung quanh EntityCollection cho tôi:
'System.Windows.Data.BindingListCollectionView' view does not support sorting.
Ok ... lạ. Tôi đã nghĩ rằng điều này sẽ làm việc. Tiếp theo trên CollectionViewSource, tôi thử cài đặt:
CollectionViewType="ListCollectionView"
Tuyệt vời, sắp xếp hoạt động. Nhưng chờ đợi, tôi không thể thêm hoặc loại bỏ các thực thể bằng cách sử dụng lưới ngay bây giờ, có lẽ vì ListCollectionView không hỗ trợ điều này với bối cảnh khung thực thể.
Vì vậy, tôi đoán tôi cần phải nắm bắt các sự kiện sắp ra khỏi DataGrid để thêm hoặc xóa các đối tượng theo cách thủ công khỏi ngữ cảnh của tôi. Bây giờ tôi không thể tìm thấy một sự kiện để chụp để phát hiện thêm ...!
Tại sao điều này quá khó? Đây sẽ là trường hợp "demo" chuẩn mà Microsoft nên thiết kế xung quanh.
Bất kỳ ý tưởng nào?
Có, ListCollectionView thực tế hoạt động. Tôi đã nhầm lẫn vì thêm vào điều này thông qua databinding đã không được thêm vào những gì tôi nghĩ là bộ sưu tập "root" mà tôi đã được ràng buộc để (myContext.Employees ví dụ). Tôi đã lầm tưởng rằng đây là những bộ sưu tập có thể thay đổi được, trong thực tế, chúng không phải, và cách duy nhất để có được các thực thể "mới" của tôi là thông qua ObjectStateManager. –
Điều này thực sự dường như làm việc tuyệt vời. Thật đáng buồn là công cụ EF RAD mặc định không quan tâm đến hộp này. Điều đó nói rằng, hãy nhớ rằng nếu bạn đang sử dụng ListCollectionView CollectionViewType với EF4, bạn sẽ phải đặt AutoGenerateColumns thành False để tránh nhận các cột EntityState và EntityKey. – Spooles