У меня есть приложение PRISM, настроенное по шаблону MVP, и мы отображаем модальные окна через пользовательский RegionManager. Проблема, с которой я сталкиваюсь сейчас, заключается в том, что пользователи закрывают модальное окно, используя Alt + F4! Вид закрывается, но логика кнопки «Отмена» никогда не выполняется, что является ошибкой!

Поэтому мне нужно набросать способ вызова кнопки «Отмена» представления при нажатии Alt + F4.

Наличие привязки клавиши ввода для Alt+F4 помогает мне перехватывать событие в представлении. но проблема заключается в простом вызове кнопки «Отмена» в представлении. есть ли способ легко найти кнопки отмены и принятия в представлении WPF?

Любая помощь приветствуется. Благодарность!

0
ioWint 14 Ноя 2011 в 22:57

1 ответ

Так как существует несколько способов закрытия окна (Alt+F4, кнопка закрытия, кнопки Cancel или Accept), не следует помещать логику закрытия в код кнопок, потому что это не всегда быть казненным. Вместо этого поместите логику закрытия в событие Closing или Closed. В кнопке «Отмена» просто установите для DialogResult значение false (true для кнопки «Принять»), это закроет окно и вызовет события Closing и Closed.

2
Thomas Levesque 14 Ноя 2011 в 23:30
Содержимое представления размещается в окне. Как вы, возможно, знаете, PRISM не имеет готовой поддержки модальных окон. Так что в настоящее время, даже если я установлю DialogResult окна на true/false, представление не будет уведомлено ни о чем. он просто исчезнет с экрана без вызова какого-либо пути отмены потока. Я знаю, что есть событие UserControl.Unloaded, но иметь в нем логику было бы слишком поздно, если нам нужно отменить закрытие на основе подсказки сообщения.
 – 
ioWint
15 Ноя 2011 в 02:37
@ioWint, извините, я не знаю о PRISM, я предположил, что вы видите окно. Но я подозреваю, что PRISM обеспечивает более чистый способ делать то, что вы хотите, чем имитация нажатия кнопки...
 – 
Thomas Levesque
15 Ноя 2011 в 12:37