¿Puede pensar en un escenario donde IEditableObject
seguiría siendo útil en una aplicación WPF basada en MVVM? Si es así, ¿tiene un ejemplo que demuestre esto?IEditableObject en MVVM
Respuesta
He usado IEditableObject
en una de mis aplicaciones. Por ejemplo, si tiene un cuadro de diálogo para editar algo, puede implementar IEditableObject en su ViewModel. Llama al BeginEdit()
cuando se abre el cuadro de diálogo, EndEdit()
cuando el usuario hace clic en Aceptar y CancelEdit()
cuando el usuario hace clic en cancelar.
IEditableObject
es una buena interfaz en cualquier momento que desee poder deshacer los cambios.
Dentro de un tipo que se muestra en un DataGrid
. Esto era necesario ya que cuando estoy usando pestañas y un DataGrid
se está almacenando dentro de esa pestaña cambiando las pestañas necesarias para forzar una confirmación por así decirlo dentro del DataGrid
si una celda estaba activa; revertir los cambios ya que no fueron cometidos. T
Se está aplicando un comportamiento al DataGrid
para lograr esta funcionalidad, pero la parte IEditableObject
está debajo.
private IDatabaseConnection _copy;
void IEditableObject.BeginEdit()
{
if (this._copy == null)
this._copy = _container.Resolve<IDatabaseConnection>();
_copy.Database = this.Database;
_copy.DisplayName = this.DisplayName;
_copy.HostName = this.HostName;
_copy.Username = this.Username;
_copy.Password = this.Password;
}
void IEditableObject.CancelEdit()
{
this.Database = _copy.Database;
this.DisplayName = _copy.DisplayName;
this.HostName = _copy.HostName;
this.Username = _copy.Username;
this.Password = _copy.Password;
}
void IEditableObject.EndEdit()
{
_copy.Database = String.Empty;
_copy.DisplayName = String.Empty;
_copy.HostName = String.Empty;
_copy.Username = String.Empty;
_copy.Password = String.Empty;
}
Tengo una implementación de IEditableObject
en mi solicitud para que pueda evitar la actualización de mi modelo de datos si lo que el usuario ha introducido no es válido, y hacer retroceder a los valores originales si el usuario abandona cambios.
- 1. WPF DataGrid llama a BeginEdit en un IEditableObject dos veces?
- 2. MVVM Foundation vs MVVM Toolkit
- 3. MVVM (ICommand) en Silverlight
- 4. El modelo en MVVM
- 5. MVVM - Validación
- 6. MVVM: comunicación
- 7. MVVM estandarización
- 8. DataTemplate + MVVM
- 9. Cómo gestionar eventos en MVVM
- 10. Recibir CommandParameter Valor en MVVM
- 11. ¿Dudas en el patrón MVVM?
- 12. Para MVVM o no para MVVM esa es la pregunta
- 13. ¿Implementando su propio MVVM vs. usando un marco MVVM?
- 14. Eventos en lugar de comandos en MVVM?
- 15. MVVM Exception Handling
- 16. Wpf UserControl y MVVM
- 17. Aprendiendo WPF y MVVM
- 18. Encuadernación de comandos MVVM
- 19. mvvm light - mensajes
- 20. MVVM, WPF y validación
- 21. MVVM - Confirmación de salida
- 22. VirtualizingStackPanel + MVVM + selección múltiple
- 23. WPF datagrid con MVVM
- 24. Animación con patrón MVVM
- 25. MVVM como asistente
- 26. MVVM para desarrollo web
- 27. ¡Todavía no consigo MVVM!
- 28. Enlace WPF + MVVM simple
- 29. ¿Adorner rompe MVVM?
- 30. De MVC a MVVM
¿Implementa los métodos en cada clase de ViewModel o simplemente en la clase abstracta original? Si la clase original, ¿cómo lo haces allí? Estaba pensando en recuperar el modelo de la base de datos pero los modelos no tienen una clase principal conjunta. No estoy seguro sobre el método de reflexión porque solo edito la parte del modelo. –
Depende. Solo lo implementaría en la clase base abstracta si los modelos tienen una funcionalidad común para ejecutar en estos eventos. Si es así, podrías implementarlo allí, pero dentro de él, llama a un método abstracto, como OnBeginEdit(), que las clases derivadas deben proporcionar. De esta forma, tiene cubiertas tanto la funcionalidad común como la específica. – Botz3000
Tengo un ViewModel que es una colección de objetos. Quiero usar un cuadro de diálogo para editar el elemento de la vista de grilla seleccionada. ¿Qué implementa 'IEditableObject', la Vista que contiene la grilla, el ViewModel al que está ligada la grilla, o la clase de la que ViewModel contiene una colección? –