2010-04-16 4 views
16

DataContext bağlamalarımın güncellenmesi için nesnelerimi nasıl zorlayabilirim? Bir ızgarada bir etkinlik kullanıyorum ve etkinliğim başlamadan önce bağlayıcı güncellemeler işlenmiyor.Zor Bağlama Güncelleştirme Silverlight

Bu çevrede dolaşmak için ucuz püf noktaları? Sonunda, her zaman metin kutularımdan değerleri alıp nesneyi güncellemenin eski manüel yollarını yapabilirim, ancak bunu benim için yapmam gerekiyor.

GÜNCELLEME

Benim ızgara iki metin kutularının içerir. Bir kullanıcı ızgarayı (MouseButtonUp olayı) tıklarsa, değişiklikleri kaydederim. Ancak, MouseButtonUp olay işleyicimde, datacontext henüz güncel değil. Bunu düşünürdüm, çünkü bir metin kutusu yalnızca odak kaybolduğunda güncellenir.

cevap

31

Kaynağın bir güncellemesini ciltlemede UpdateSource() yöntemini çağırarak bağlamaya zorlayabilirsiniz. Kaydetmeden hemen önce MouseButtonUp olay işleyicisine eklemeyi deneyin.

böylece gibi:

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

MSDN'den bu konuda daha fazla bilgi bulabilirsiniz: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

+0

Henüz denemedim ama eminim ki işe yarayacak. Teşekkür ederim. – Matt

+0

Bir çekicilik gibi çalışır. – grabah

0

Alternativly TextInput olay yakalayabilirsiniz (kullanıcı presler içindeki metin kutusuna girdiğinizde ateş edeceği) ve ardından odağı ikinci textBox'a değiştir. Odaklama, bağlanan değeri güncelleyecektir.