У меня есть кнопка, которая запускает «модальное диалоговое окно» - оно просто создает прозрачную сетку, покрывающую все, с «диалоговым окном», созданным поверх этого.
Однако у меня есть странная проблема - если я действительно быстро или дважды нажимаю кнопку (или добавляю некоторую задержку в код события), событие нажатия кнопки выполняется несколько раз, создавая несколько перекрывающихся модальных диалогов. Если первым действием в моем событии является отключение кнопки (IsEnabled = false), это, похоже, предотвращает это.
Я предполагаю, что Silverlight является многопоточным с вводом - он не только записывает второй щелчок в другом потоке (пока выполняется событие нажатия кнопки), но и запускает оружие, оценивая, какой элемент управления должен быть целью до предыдущее событие завершилось. Даже если это событие меняет то, что контролирует эти координаты мыши, это не имеет значения.
Кто-нибудь знает что-нибудь об этом поведении или способе его обойти? Если у меня есть что-то вроде окна сохранения, где пользователь нажимает кнопку сохранения, блокирующая сетка («Сохранение ...») помещается вверх во время сохранения, а затем закрывается все «окно», я бы хотел Избегайте возможности пользователя ставить в очередь несколько кликов событий сохранения (это может привести к непредсказуемому поведению программы).