Trong Delphi XE2 LiveBindings, tôi cần ràng buộc điều khiển VCL thuộc bất kỳ loại nào với thuộc tính của bất kỳ loại nào trên một đối tượng tùy ý (không phải thành phần). Tôi có thể làm điều này một cách một chiều. Nhưng tôi cần phải làm điều đó theo chiều hai chiều.Cần LiveBirectings hai chiều giữa điều khiển và đối tượng
Giả sử tôi muốn ràng buộc một TPerson.PersonName: string thành TEdit.Text.
Điều tôi hiện nay thật đơn giản.
- Tạo ứng dụng VCL mới, thêm TBindScope, TBindingsList, TEdit.
- Tạo một phiên bản của TPerson có tên person1.
- Sử dụng danh sách BindingList, thêm thuộc tính TBindExpression.
- Với BindExpression
-
- bộ ControlComponent để Edit1
-
- bộ ControlExpression để 'Text'
-
- bộ SourceComponent để BindScope1
-
- bộ SourceExpression để PERSONNAME
- Thêm một nút; cho sự kiện Nhấp tôi thêm: BindScope1.DataObject: = person1;
- Thêm nút; cho sự kiện Nhấp tôi thêm (chỉ một sự kiện là cần thiết, nhưng cho đến khi nó hoạt động, tôi sẽ thử cả hai).
-
- TBindings.Notify (sender, '');
-
- BindingsList1.Notify (sender, '');
Nút đầu tiên liên kết theo hướng đầu tiên. Nút thứ hai không bao giờ có vẻ như viết lại giá trị cho thuộc tính person1.PersonName.
Tôi đã thử nghiệm với mã thông báo, hướng ràng buộc, loại ràng buộc, biểu thức, SourceMember, vv Đôi khi tôi gặp lỗi thời gian chạy trong cấu hình bindexpression, phần còn lại của thời gian ràng buộc đơn giản là một chiều.
Tôi mong đợi nhấp vào nút thứ hai và xem nội dung của Edit1.Text write to person1.PersonName.
Nếu tôi phải làm điều này tất cả từ mã, tôi sẽ xem xét nó và các ví dụ như vậy được chào đón, nhưng tôi thực sự muốn làm điều đó thông qua các nhà thiết kế nếu có thể.
Lưu ý rằng tôi không quan tâm đến việc ràng buộc giữa hai điều khiển.
Lưu ý rằng tôi đã tải xuống và kiểm tra dự án mẫu LiveBinding và không tìm thấy bất kỳ dự án nào thực hiện việc này. Nếu điều này là sai, hãy cụ thể khi chỉ ra. Tôi cũng đã đọc DocWiki. Nó không bao gồm ràng buộc hai chiều ngoại trừ việc sử dụng các điều khiển liên kết LiveBinding DB. Tôi không sử dụng các điều khiển LiveBinding của DB và tôi cũng không sử dụng Số liệu. Vì vậy, trừ khi bạn có thể giải thích cho tôi lý do tại sao tôi nên sử dụng chúng, tôi sẽ không cần bất kỳ thông tin nào về các điều khiển đó.
Sử dụng DSharp thay vì LiveBindings và làm cho này một lót hai (một cho việc thực hiện các setter của một tài sản đó phải được ràng buộc ý thức và một cho việc tạo ra các ràng buộc) –