WPF ¿Cómo evito que el texto de MaskedTextBox se borre al hacer clic en él?
Este es el xaml de mi MaskedTextBox (de Extended WPF Toolkit) en el cual enlazo el texto con la propiedad Time
de mi datacontext.
Esta es la parte de mi Datacontext que lo actualiza, y mi propiedad Time
.
public class MyViewModel : ObservableObject, INavigationAware {
public string Time {
get;
set; //break point 1
}
public static void UpdateTime(string time) {
Time = time;
OnPropertyChanged("Time");
}
}
El problema es que cada vez que hago clic en el MaskedTextBox, el texto vuelve al carácter de ayuda.
Por ejemplo, al iniciar la aplicación, el MaskedTextBox tendría 00:00:00. Después de algún evento, actualizo la propiedad de tiempo a 12:34:56, y se mostrará correctamente en la interfaz de usuario. Pero cuando hago clic en el MaskedTextBox, cambia el texto de vuelta a 00:00:00.
La pila de llamadas de Break point 1 solo muestra “código externo”. No pude encontrar una opción en el documento para desactivar este comportamiento, ¿cómo puedo detenerlo?
davy.ai
Parece que el control MaskedTextBox está restableciendo el texto al carácter de indicación cuando obtiene el foco. Una posible solución es manejar el evento PreviewGotKeyboardFocus del control y establecer la propiedad Handled en true para evitar que el control maneje el evento por sí mismo. Aquí tienes un ejemplo:
Al establecer la propiedad Handled en true, le estamos indicando al control que ignore el evento y no restablezca el texto al carácter de indicación. Esto debería permitir que el texto permanezca tal como está, incluso cuando el control obtiene el foco.