He visto implementaciones de TextBox
numérico con código detrás en WPF
. ¿Cómo hacemos esto en el patrón MVVM
?Cuadro de texto numérico con patrón MVVM
Respuesta
Honestamente, ¿qué tienen en común el MVVM y el cuadro de texto numérico?
si desea un cuadro de texto numérico, crea un nuevo TextBox o AttachedProperty o un Behavior. Here es un ejemplo de comportamiento de MaskedTextbox para ver lo que quiero decir.
ahora a su parte de MVVM. supongo que quiere validar su entrada para que sea solo numérica. si su viewmodel tiene una propiedad de tipo int, entonces su enlace solo funciona si su vista tiene entrada que se puede convertir a int. de lo contrario, su modelo de vista nunca será informado. hay 2 formas ahora:
primero: asegúrese de que su vista solo puede tomar una entrada numérica (con su cuadro de texto numérico) y la propiedad viewmodel puede ser int.
o segundo: el tipo de propiedad de viewmodel es typeof string y utiliza IDataErrorInfo para que la vista se conozca cuando la entrada no es numérica.
Bueno ... si desea que se le notifique en su modelo de vista cuando la propiedad de texto del cuadro de texto numérico cambie, solo conéctelo. Si la propiedad .Text del cuadro de texto numérico no es una propiedad de dependencia, ¡golpee el codificador!
éste: http://wpftoolkit.codeplex.com/wikipage?title=DecimalUpDown&referringTitle=Home
puedo recomendar y que puede unirse a él desde el modelo de vista a través de:
<!-- View: -->
<NumericTextBox Text="{Binding MyViewModelTextStringProperty}" />
//ViewModel:
public string MyViewModelTextStringProperty
{
get/set with NotifyPropertyChanged....
}
Por la definición estándar de MVVM que no desea un modelo de vista detrás de una control personalizado Todo lo que debe hacer es extender el control TextBox y asegurarse de que solo se ingrese la entrada numérica. También debe agregar una DependencyProperty que devuelve la entrada numérica.
El ViewModel entrará cuando se use ese control en una ventana o en un control compuesto. Debería vincular el texto o la propiedad de dependencia numérica a una propiedad pública en su ViewModel.
Si realmente quisiera hacer esto en el ViewModel, tendría que hacer que su propiedad enlazada sea una cadena. Asegúrese de que el enlace se actualice con cada pulsación de tecla (usando el UpdateSourceTrigger
).
En su setter, rechace los valores no numéricos mediante la generación de una excepción o el recorte de caracteres no numéricos. El último enfoque tiene el beneficio de trabajar para operaciones de copiar/pegar donde el texto pegado puede contener una combinación de dígitos y letras, pero solo los dígitos deben ser retenidos.
Dicho esto, estoy de acuerdo con otras sugerencias de que tener un control especializado que solo expone una propiedad numérica es un enfoque más limpio.
Saludos,
Eric.
En WPF si vincula el TextBox a una propiedad decimal o interna, aceptará solo ese int o decimal, de lo contrario mostrará un borde rojo que no tiene el valor adecuado en el enlace. Y si está hablando sobre el cuadro de texto de actualización numérica, entonces está disponible con el kit de herramientas WPF sobre here
- 1. Cómo vincular datos con el cuadro de texto enriquecido con el patrón MVVM?
- 2. patrón MVVM con PySide
- 3. Animación con patrón MVVM
- 4. MVVM Foco en el cuadro de texto
- 5. WPF OpenFileDialog con el patrón MVVM?
- 6. Apertura de un cuadro de información usando el patrón MVVM
- 7. MVVM- ¿Cómo puedo seleccionar texto en un cuadro de texto?
- 8. ¿Cómo crear un cuadro de texto numérico en Silverlight?
- 9. Cómo enfocar el cuadro de texto en WP7 usando MVVM?
- 10. MVVM patrón de violación: MediaElement.Play()
- 11. Cómo vincular una propiedad a un cuadro de texto usando MVVM y MVVM toolkit?
- 12. ¿Dudas en el patrón MVVM?
- 13. Crear un cuadro de texto numérico en java Cambiar con botones de incremento y disminución
- 14. WPF - MVVM - Cuadro de texto que no se sincroniza con la propiedad viewmodel
- 15. Patrón de MVVM, pregunta de ViewModel DataContext
- 16. Patrón MVVM para Webforms de ASP.NET?
- 17. Abrir el cuadro de diálogo en WPF MVVM
- 18. ¿Puede un ViewModel hablar con View en el patrón MVVM?
- 19. Patrón MVVM y datos semi-globales
- 20. Aplicar el patrón MVVM en un QtQuick
- 21. ¿Cuáles son los problemas del patrón MVVM?
- 22. Cuadro de contraseña con texto de sugerencia
- 23. Validar campo de texto numérico en jQuery
- 24. Rellene un cuadro de texto con jQuery
- 25. cuadro de texto con un fondo transparente
- 26. Cuadro de texto con sugerencias desplegables
- 27. Cuadro de texto vacío con Jquery
- 28. Deshabilitar un cuadro de texto con CSS
- 29. Cuadro de texto con "nueva línea"
- 30. WPF MVVM: Cuadro de texto y botón de enlace predeterminado hace demasiado tarde actualización
La razón por la que incluí MVVM es porque vi implementaciones en las que se usa el evento Preview Key en el código subyacente. Solo quiero eliminar esas respuestas – katie77
@Blindmeis, ¿puedo tener traducción en esa jajaja? –