none
Ejecutar un comando manualmente desde el evento de un botón con MVVM pero sin MVVMLight RRS feed

  • Pregunta

  • Hola a todos, estoy en un impass, tengo una pantalla que me permite seleccionar datos que los va a utilizar otra pantalla, es como presentarle a un cliente una lista de habitaciones disponibles de un hotel, y con la habitación elegida al pulsar sobre ella se tienen que hacer dos cosas:

    1) Borrar la pantalla actual y presentar la que va a utilizar los datos.

    2) Enviar los datos elegidos al ViewModel de forma que al aparecer la otra ya contenga esos datos.

    La opción 1 implica un evento

    La opción 2 implica un comando

    Es decir que necesito crear un gestor de evento que dispare el comando de forma manual y luego realice el borrado y pintado de pantallas, pero esto que parece simple no lo encuentro en ningún sitio, no se si no es tan sencillo, pero todos los ejemplos que veo hacen referencia a WindowsCommand como Application.Open, Application.Cut pero no comandos propios derivados de ICommand, la lógica me dice que tengo que crear un commandBinding desde el evento y dispararlo, pero no encuentro ni un solo ejemplo, podéis  ayudarme con esto, me tiene parado

    un abrazo

    miércoles, 12 de agosto de 2015 9:07

Todas las respuestas

  • hola

    pero si vas a comunicar dos viewmodel solo necesitas algun evento que envie la accion, por lo general se usa el publish-subscriber

    comunicar vie Comunicar 2 Vistas MVVM model

    seguramente en el primer viewmodel se ejecutara un comando con la accion, pero en el segundo solo llegara el metodo al cual adjuntes al evento

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 12 de agosto de 2015 13:11
  • No no necesito comunicar dos ViewModel, para esas comunicaciones utilizo una clase estática que almacena la información y el otro la recoge, mi problema tiene la siguiente secuencia, una pantalla necesita que el usuario elija una opción y para ello abre una nueva pantalla con todas las posibles opciones en forma de botones gráficos, el usuario elije una y pulsa sobre la opción inmediatamente se dispara un comando que le pasa los datos al viewmodel, pero como el botón ha disparado un comando ya no dispara un evento para volver a la pantalla anterior, es decir cerrarse y volver a la pantalla con los datos recogidos, esto se puede solucionar añadiéndole a la ventana de selección otro botón que ponga algo como "Volver" pero no es una buena solución que el usuario tenga que pulsar dos veces,

    Yo creo que creando un CommandBinding desde el code-behind debe ser posible y no tan complicado pero no localizo ninguna referencia.

    un saludo

     
    miércoles, 12 de agosto de 2015 19:32
  • hola

    >>para esas comunicaciones utilizo una clase estática que almacena la información

    no se realiza de esa forma, no se sua estatic para comunicar dos view, se usan eventos aplicando el concepto de publish-subscriber

    >>pero como el botón ha disparado un comando ya no dispara un evento para volver a la pantalla anterior, es decir cerrarse y volver a la pantalla con los datos recogidos

    desde el mismo comando podrias cerrar la ventana

    Closing a WPF Window using MVVM and minimal code-behind

    como veras al viewmodel le puedes definir un Action que vincule el codebehind con su viewmodel de esta forma el comando que se ejecuta en el viewmodel lanza una accion this.Close() en la ventana para que esta se cierre

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 13 de agosto de 2015 14:05
  • me podrías aclarar algo más o darme un enlace que hable de  publish-subscriber

    Gracias

    viernes, 14 de agosto de 2015 23:44