События нажатия кнопки C #, запускаемые после команды

StackOverflow https://stackoverflow.com/questions/1614920

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня возникли проблемы при попытке вызвать событие click после выполнения команды. Я пытаюсь следовать стилю разработки MVVM.

Вот сценарий:

В моем приложении у меня есть сетка из 2 на N кнопок, где N - это динамически загруженный набор кнопок (иногда это будет 2 x 2, иногда 5 x 9, я не знаю). Первоначально все столбцы кнопок будут скрыты, кроме первого столбца. При нажатии на первый столбец запускается команда, и воспроизводится анимация с постепенным исчезновением, которая показывает определенные кнопки из второго столбца, в зависимости от того, какая кнопка была нажата в первом столбце. Например, если щелкнуть верхнюю кнопку в первом столбце, отобразятся первые четыре кнопки во втором столбце, тогда как нижняя кнопка в первом столбце отобразит первые три кнопки во втором столбце.

Вот проблема:

Для каждой кнопки я установил CommandParameter для каждой из кнопок в первом столбце. Когда команда выполняется, данные обрабатываются, и в виртуальной машине устанавливается свойство, которое сообщает, какая кнопка была нажата (я просто снова использую CommandParameter). Во время обработки данных я хочу отобразить следующий набор кнопок для пользователя. У меня есть событие click, которое берет CommandParameter из виртуальной машины и воспроизводит анимацию, чтобы показать правильные кнопки.

Однако проблема в том, что WPF любит сначала выполнять событие Click до запуска команды. Это проблема, поскольку свойство в виртуальной машине, которое сообщает, какая кнопка была нажата, не устанавливается!

Так что это подводит меня к паре вопросов ...

1) Есть ли способ выполнить команду до запуска события?

2) Я все делаю правильно? : P

Это было полезно?

Решение

Вместо использования обработчика событий щелчка вы можете просто установить DataTriggers на свои кнопки.

Они могут реагировать на свойство в вашей ViewModel, скрывая кнопки, которые вы не хотите отображать, и показывая кнопку, которую вы делаете.

Приятно то, что ваш View может быть полностью выполнен в XAML, а ViewModel просто устанавливает состояние (т. е. я в этом состоянии), и View автоматически обновляется, поскольку привязка вызовет новый DataTrigger для стрельбы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top