Đây là khu vực phức tạp; sau đây là một sự cố từ ràng buộc winforms, nhưng tôi hiểu rằng ràng buộc WPF không phải là khác nhau;
- cho một đối tượng, mã điều đầu tiên ràng buộc sẽ làm là tìm kiếm
IListSource
- và nếu như vậy sử dụng GetList()
để có được những ràng buộc thực tế (đây là cách một dữ liệu bảng trở thành một dữ liệu-view cho các mục đích ràng buộc)
- sau đó, nguồn thường được kiểm tra cho
ITypedList
; hành vi này là một cách linh hoạt để thu được các thuộc tính giả (GetItemProperties()
) được đại diện bởi mô hình; dữ liệu quan điểm thực hiện ITypedList
, tạo giả thuộc tính cho mỗi dụ
- nếu không, nó có thể là thể xác định một loại rõ ràng cho các dữ liệu, trong đó có thể có nghĩa:
- tìm kiếm một indexer có dạng
public SomeType this[int index] {get;}
- lưu ý rằng hầu hết bộ sưu tập sẽ làm hài lòng này
- (không được thực hiện bởi winforms, nhưng có thể cho WPF) giải quyết thông qua phản ánh sự
T
trong cả hai IList<T>
hoặc IEnumerable<T>
nếu đối tượng thực hiện những giao diện
- lấy đối tượng đầu tiên (nếu có) từ Sorce, và sử dụng
GetType()
- khi một loại được biết,
TypeDescriptor.GetProperties(type)
có thể được sử dụng để lấy thuộc tính; trong nhiều trường hợp, điều này sẽ thông qua sự phản chiếu, nhưng cũng có thể thêm một lớp vô hướng (thông qua TypeDescriptionProvider
) để cung cấp các thuộc tính cho một loại (điều này có thể được thêm vào trong thời gian chạy, rất thuận tiện). cá nhân ràng buộc (không phải danh sách ràng buộc), cũng có TypeDescriptor.GetProperties(obj)
- ngoài phản ánh và TypeDescriptionProvider
, điều này cũng có hỗ trợ cho ICustomTypeDescriptor
có thể được thực hiện bởi một đối tượng cá nhân để cung cấp thuộc tính tùy chỉnh trong thời gian chạy (rất giống với TypeDescriptionProvider
, nhưng với cá nhân đối tượng chịu trách nhiệm về các tài sản)
Tôi không biết chính xác bao nhiêu điều này áp dụng cho ràng buộc WPF, nhưng tôi khá chắc chắn rằngViệc xử lývà ITypedList
giống hệt nhau. Từ bộ nhớ, hầu hết (tất cả?) Của các chiến lược winforms sẽ làm việc trên WPF - vì vậy nó có thể được rằng và thay đổi là bổ sung móc.
Nguồn
2011-09-15 07:19:54
Kiểm tra http: // stackoverflow này.com/questions/5488014/in-wpf-are-binding-path-và-binding-thực sự bình đẳng, http://stackoverflow.com/questions/3504480/when-to-use-path-in-wpf-binding và http://stackoverflow.com/questions/4742449/new-to-wpf-data-binding –
@Sandeep GB Đó không phải là câu hỏi của tôi. Tôi biết làm thế nào để làm ràng buộc, tôi muốn biết làm thế nào để DataGrid làm điều đó internaly với bất kỳ đối tượng. – Vale