7

Estoy trabajando con VS2010, WPF y EF. He colocado controles en mi ventana arrastrando una entidad fuera de la ventana de herramientas Orígenes de datos. Utilicé la configuración de "detalles" para que mi entidad esté representada por varias etiquetas y cuadros de texto. También he añadido un botón con el siguiente código:Force WPF para confirmar cambios en el elemento enfocado

_context.SaveChanges(); 

Cuando estoy editando los datos, los cambios en cualquier cuadro de texto tiene el foco no se han comprometido de nuevo a la base de datos. Todo lo demás se compromete bien. Si cambio el foco a otro elemento antes de presionar el botón de guardar, también se compromete. He experimentado lo mismo con DataGrid.

Sé que me está perdiendo algo simple, pero puedo resolverlo. ¿Alguna idea sobre lo que me estoy perdiendo?

Gracias!

Respuesta

12

Esto se debe a que TextBox Default Binding UpdateSourceTrigger es LostFocus. Si modifica todos sus enlaces a active esta PropertyChanged, que funcionará como esperas:

<TextBox Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged}" /> 
+2

¿Por qué el cuadro de texto "perder el foco" cuando se hace clic en el botón? ¿Puedes forzar programáticamente esto? –

+0

+1 Eso es exactamente lo que estaba buscando. ¡Gracias! –

+1

¿Alguien puede responder la pregunta de Rob Fonseca-Ensor? – newman

3

Me acabo de encontrar con este mismo problema cuando se trata de establecer el valor de un cuadro de texto de enlace de datos mediante programación, pero la sugerencia de Abe dejase' Funcionó para nuestra configuración (estaba causando un comportamiento de validación errático).

Así es como llegué a trabajar:

TextBox tb = (TextBox)this.FindName("TargetTextBox"); 
tb.Text = "1234"; 
tb.GetBindingExpression(TextBox.TextProperty).UpdateSource(); 
Cuestiones relacionadas