Soy bastante nuevo en el mundo de WPF & MVVM, y he pasado los últimos días descargando tantos tutoriales como pude, ¡y leyendo tanto como sea posible!MVVM: ¿cómo abro una ventana en función de un elemento seleccionado de una lista?
sin embargo yo estoy luchando para poner en práctica con un concepto muy básico y común con MVVM y estoy desesperado por un poco de ayuda - y tal vez incluso un ejemplo :-)
Tengo los fundamentos de MVVM, al mando e incluso messenging; pero, ¿cómo voy a abrir una nueva ventana y configurar esa ventana ViewModel para el elemento seleccionado de un listbox?
Me explico: he llamado cliente un modelo y tiene algunas propiedades Entonces tengo un modelo de vista que obtiene todos mis clientes y los almacena en una ObservableCollection tengo una pantalla en la que mostrar el nombre & Apellido de un cuadro de lista y permite al usuario filtrar y buscar.
Todo lo anterior funciona perfectamente.
Cuando un usuario selecciona un elemento, me gustaría abrir una pantalla editable de "vista detallada del cliente" de ese cliente en particular. El ViewModel de esta pantalla detallada tendría que vincularse de algún modo al elemento seleccionado (si tiene sentido); o necesito poder pasar un parámetro al ViewModel de la pantalla recién abierta. De hecho, si el usuario pudiera abrir varias pantallas de detalles al mismo tiempo y editar múltiples clints, ¡sería genial!
Si alguien me puede dar un buen ejemplo, o apuntarme en la dirección correcta, ¡realmente estaría muy agradecido!
Muchas gracias, Brendan
Gracias Rachel, tipo de He llegado bien. He creado un constructor para mi DetailViewModel y lo he vinculado al contexto de datos de DetailForms en el código subyacente del doble clic de listview. Claramente no había "pulsado" que uno puede crear y vincular viewmodels en un código como ese ... – Brendan
Realmente no debería hacer esto, a menos que su diálogo sea lo suficientemente trivial como para que sea una pérdida de código crear una vista de diálogo modelo. Idealmente, toda su lógica de presentación está en los modelos de visualización, incluida la navegación, como la creación de nuevas vistas y la visualización de modelos. –
Incluso si quisiera hacerlo completamente en ViewModels, lo haría de forma similar. La principal diferencia sería que ListBox.SelectionChanged apuntaría a un Comando ViewModel y el código estaría en la VM en lugar del código subyacente. – Rachel