Для внесения такого рода изменений в архитектуру вам потребуется рефакторинг всей вашей логики вне пользовательского интерфейса, а затем переписать пользовательский интерфейс поверх бизнес-уровня или уровня обслуживания.
Например, ваше событие clickпотребуется удалить его код и переместить его в Amodel или viewmodel и, возможно, заменить окно сообщения вызовом службы окна сообщений, которая может быть заглушена для тестирования.
Такой вид рефакторинга может быть выполненмедленно используя технику, описанную доктором Т.Дж., или вы можете потратить время на рефакторинг кода из своего уровня пользовательского интерфейса, а затем заменить слой пользовательского интерфейса одним ударом позже.