2010-10-16 7 views
5

Estoy creando una aplicación y he supuesto que cuando un control está vinculado a un miembro en el modelo de vista (es decir, un TextBox a un campo de cadena) la cadena se actualiza cada vez que el usuario cambia la información en el cuadro de texto y no más tarde.En C# (WPF), ¿se produce un enlace de datos cuando los cambios de datos en la interfaz de usuario se procesan inmediatamente?

Pero lo que he encontrado es que la cadena se actualiza cuando se cambia el cuadro de texto Y cuando el usuario hace clic \ tabula fuera del cuadro de texto.

(estoy usando el marco Caliburn.Micro si lo que importa.)

Puede alguien explicar lo que es correcto y cómo hacer para que un cambio se refleja inmediatamente?

Respuesta

6

Esto no es un problema de WPF ... depende totalmente de los controles.

Pero lo que he encontrado es que la cadena se actualiza cuando el cuadro de texto se cambia Y cuando el usuario hace clic en \ pestañas de cada el cuadro de texto.

Este es un cuadro de texto específico para reducir la cantidad de operaciones programadas y evitar establecer datos incompletos.

http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/c3ae2677-7cc9-4bb3-9cce-4e7c0eeff6f0 tiene una solución: básicamente el activador de la fuente de actualización se establece en la propiedad modificada. Sin embargo, si haces eso, obtienes datos mucho más inválidos en el modelo, como por ejemplo, cuando las personas ingresan un número de factura, todos los parciales irán al modelo.

http://msdn.microsoft.com/en-us/library/system.windows.data.binding.updatesourcetrigger.aspx tiene una buena explicación: como dice, el activador normal es PropertyChanged, mientras que la propiedad de texto está predeterminada en LostFocus.

+0

Gracias por la respuesta, definitivamente miraré el enlace. En cuanto a los datos incorrectos, el modelo de vista realmente está haciendo la validación de entrada y no guardará nada en el modelo a menos que todo pase. – Scifiballer24

+0

Claro. solo es una validación mucho menor si solo se trata de "entrada finalizada" y no recibe las actualizaciones "en camino";) – TomTom

Cuestiones relacionadas