2010-04-16 38 views
16

Làm cách nào để buộc các đối tượng của tôi liên kết DataContext cập nhật? Tôi đang sử dụng sự kiện trên lưới và các bản cập nhật ràng buộc không được xử lý trước khi sự kiện của tôi kích hoạt.Cập nhật ràng buộc lực lượng Silverlight

Bất kỳ thủ thuật rẻ nào để giải quyết vấn đề này? Cuối cùng, tôi luôn có thể làm mọi thứ theo cách thủ công cũ để lấy các giá trị từ hộp văn bản của tôi và cập nhật đối tượng của tôi, nhưng thật tuyệt khi có ràng buộc làm điều đó cho tôi.

CẬP NHẬT

lưới của tôi chứa hai hộp văn bản. Nếu người dùng nhấp vào lưới (sự kiện MouseButtonUp) thì tôi lưu các thay đổi. Nhưng trong trình xử lý sự kiện MouseButtonUp của tôi, datacontext vẫn chưa được cập nhật. Tôi tưởng tượng nó là bởi vì một hộp văn bản chỉ cập nhật khi tiêu điểm bị mất.

Trả lời

31

Bạn có thể buộc cập nhật của nguồn một ràng buộc bằng cách gọi hàm UpdateSource() methond trên liên kết. Hãy thử thêm nó vào trình xử lý sự kiện MouseButtonUp ngay trước khi lưu.

Giống như vậy:

BindingExpression binding = FirstTextBox.GetBindingExpression(TextBox.TextProperty) 
if (null != binding) binding.UpdateSource(); 

Bạn có thể tìm thêm thông tin về vấn đề này trên MSDN: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

+0

Tôi chưa thử nhưng tôi chắc chắn nó sẽ hoạt động. Cảm ơn bạn. – Matt

+0

Làm việc như một sự quyến rũ. – grabah

0

Alternativly bạn có thể bắt sự kiện TextInput (nó sẽ cháy khi ép người dùng nhập text box bên trong) và sau đó thay đổi tiêu điểm thành hộp văn bản thứ hai. mất tập trung sẽ cập nhật giá trị ràng buộc.

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