2009-07-14 47 views
6

Ảnh lớn: Tôi có một điều khiển con tùy chỉnh tạo nhiều hộp văn bản, trình đặt ngày, combo vv dựa trên thuộc tính mà tôi đã đặt. Điều khiển này được nhúng ở nhiều nơi khác nhau trong ứng dụng SL của tôi.Silverlight: Thuộc tính điều khiển ràng buộc theo lập trình

Tôi thường sử dụng mẫu MVVM và tôi muốn ràng buộc các giá trị của các điều khiển động này trở lại vào mô hình chế độ xem trang chính của tôi.

Tôi luôn biết rằng sẽ có 8 điều khiển trên biểu mẫu để tôi có thể có các thuộc tính phụ thuộc tại chỗ cho các điều khiển liên kết. Sau đó, các điều khiển tham chiếu đến điều khiển này, có thể sử dụng ràng buộc với dữ liệu đã được nhập trong khi vẫn duy trì một mẫu MVVM.

Câu hỏi: Làm cách nào để liên kết giá trị của điều khiển động với thuộc tính phụ thuộc theo lập trình?

Cảm ơn, Đánh dấu

Trả lời

10

cho phép giả định bạn đã tạo một TextBox đơn giản tự động và bạn muốn thêm một ràng buộc đối với các thuộc tính Text: -

Binding binding = new Binding("SomeProperty"); 
binding.Mode = BindingMode.TwoWay; 

txtBox.SetBinding(TextBox.TextProperty, binding); 

đâu txtBox là tự động tạo ra TextBox bạn muốn quan sát/biến đổi.

+2

Tôi cho rằng cần có nhiệm vụ để ràng buộc.Source. Nếu không, nó không ràng buộc bất cứ điều gì. –

+0

Bạn có thể nhận xét về câu hỏi liên quan của tôi không? http://stackoverflow.com/questions/8854034/how-to-create-binding-inside-custom-control-automatically – katit

8

Đánh dấu, tôi không hoàn toàn chắc chắn rằng tôi đã hiểu các tác động trong câu hỏi của bạn, nhưng bạn đã xem xét lớp Binding chưa? Ví dụ:

Customer customer = new Customer(); 
TextBox box = new TextBox(); 
Binding binding = new Binding("FullName"); 
binding.Source = customer; 
box.SetBinding(TextBox.TextProperty, binding); 

Điều này liên kết thuộc tính "Văn bản" phụ thuộc của điều khiển Hộp văn bản đến thuộc tính "Toàn bộ" của đối tượng khách hàng.

+1

Và như AnthonyWJones đã chỉ ra, bạn cần đặt BindingMode.TwoWay nếu bạn muốn thay đổi trong TextBox để truyền lại cho đối tượng khách hàng. –

+0

Bạn có thể không muốn chỉ định nguồn ở cấp độ này dù bạn có muốn không? – AnthonyWJones

+0

Vâng, có thể không - vì điều đó sẽ ghi đè DataContext. –

Các vấn đề liên quan