Pregunta

Tengo problemas para intentar que se active un evento de clic después de que se ejecute el comando. Estoy tratando de seguir el estilo de desarrollo de MVVM.

Aquí está el escenario:

En mi aplicación tengo una cuadrícula de 2 por N botones, donde N es un conjunto de botones cargados dinámicamente (a veces será 2 x 2, a veces es 5 x 9, no sé). Inicialmente, todas las columnas de botones estarán ocultas, excepto la primera columna. Al hacer clic en la primera columna, se ejecuta un comando y se reproduce un fundido en la animación que muestra ciertos botones de la segunda columna, según el botón en el que se hizo clic en la primera columna. Por ejemplo, al hacer clic en el botón superior de la primera columna se mostrarán los primeros cuatro botones de la segunda columna, mientras que el botón inferior de la primera columna mostrará los primeros tres botones de la segunda columna.

Aquí está el problema:

Para cada botón, configuro un CommandParameter para cada uno de los botones en la primera columna. Cuando se ejecuta el comando, se procesan los datos y se establece una propiedad en la máquina virtual que dice qué botón se presionó (solo uso el CommandParameter de nuevo). Mientras se procesan los datos, quiero mostrar el siguiente conjunto de botones al usuario. Tengo un evento de clic que toma el CommandParameter de la VM y reproduce una animación para mostrar los botones adecuados.

Sin embargo, el problema es que a WPF le gusta hacer el evento Click antes de que se ejecute el comando. ¡Esto es un problema ya que la propiedad en la VM que dice qué botón se hizo clic no se configura!

Así que eso me lleva a un par de preguntas ...

1) ¿Hay alguna forma de ejecutar el comando antes de activar el evento?

2) ¿Lo estoy haciendo bien? : P

¿Fue útil?

Solución

En lugar de usar un controlador de eventos de clic, puedes configurar DataTriggers en tus botones.

Podrían responder a la propiedad en tu ViewModel, ocultando los botones que no quieres que se muestren y mostrando el botón que haces.

Lo bueno de esto es que su Vista se puede hacer completamente en XAML, y ViewModel solo está configurando el estado (es decir, estoy en este estado), y la Vista se mantendrá actualizada automáticamente ya que el enlace causará la nuevo Data Trigger para disparar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top