2010-04-16 15 views
16

¿Cómo puedo obligar a mis objetos a actualizar los enlaces de DataContext? Estoy usando un evento en una grilla, y las actualizaciones de enlace no se están procesando antes de que se desate mi evento.Force Binding Update Silverlight

¿Algún truco para evitar esto? Al final siempre puedo hacer las cosas de la vieja forma manual de obtener los valores de mis cuadros de texto y actualizar mi objeto, pero sería bueno tener un enlace hacerlo por mí.

ACTUALIZACIÓN

Mi cuadrícula contiene dos cuadros de texto. Si un usuario hace clic en la cuadrícula (evento MouseButtonUp), entonces guardo los cambios. Pero en mi controlador de eventos MouseButtonUp, el contexto de datos aún no está actualizado. Me imagino que es porque un cuadro de texto solo se actualiza cuando se pierde el foco.

Respuesta

31

Puede forzar una actualización de la fuente de un enlace llamando al método UpdateSource() en el enlace. Intente agregarlo al controlador de eventos MouseButtonUp justo antes de guardar.

así:

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

Puede encontrar más información sobre esto en MSDN: http://msdn.microsoft.com/en-us/library/system.windows.data.bindingexpression.updatesource(VS.95).aspx

+0

No lo he probado todavía, pero estoy seguro de que funcionará. Gracias. – Matt

+0

Funciona como un encanto. – grabah

0

Alternativly se puede coger evento TextInput (que se disparará al usuario presiona ENTRAR cuadro de texto dentro) y luego cambiar el foco al segundo cuadro de texto. perder foco actualizará el valor encuadernado.