way two raisepropertychanged propertychange property change wpf binding textbox string-formatting propertychanged

wpf - two - TextBox enlazado a Decimal con UpdateSourceTrigger=PropertyChanged



raisepropertychanged wpf (1)

Tienes dos opciones simples para lograr lo que quieres:

  1. Intente escribir primero un ''0'' ... puede ingresar ''0.01234'' sin problema.

  2. Use StringFormat={}{0:0.00000} lugar ... luego puede ingresar ''.01234'' sin problema.

He estado luchando contra este problema desde hace un tiempo y parece que no puedo encontrar una solución concreta. Tengo un TextBox que está vinculado a un decimal, y el enlace tiene UpdateSourceTrigger establecido en PropertyChanged y es así por necesidad ( LostFocus no funcionará bien en este caso). El comportamiento predeterminado, aunque estoy seguro de que es de alguna manera explicable, no es aceptable para mis propósitos, así que probé el siguiente StringFormat, que pensé que remediaba el problema, pero solo parcialmente y ahora estoy buscando algo más concreto. Mi solución original fue agregar un formato de cadena al enlace ... en mi caso fue

StringFormat={0:#.#####}

entonces al escribir algo como .12345 o 1.5 la solución funciona muy bien, sin embargo, si escribo .01234, tan pronto como presiono la tecla cero, elimina el decimal que acabo de tipear ... lo que por razones obvias sería desastroso en términos de entrada de datos. Espero que mi familiaridad con el formato de cadenas falte. En el caso hipotético, haré que mi propiedad expuesta sea una cadena y setter y getter simplemente conviertan a decimal, pero eso parece una solución hacky.

¡Gracias!

Aj