Andrey Yefimov написал Вам правильное решение.
У любого объекта-анимации есть событие OnFinish.
Вам нажно назначить (либо переопределить) обработчик этого события.
Т.е. решение, примерно, такое:
нажимая на кнопку, запускаете анимацию (и не нужно ничего больше выполнять, так как нужно дождаться когда анимация закончится)
когда анимация закончится (возникнет событие OnFinish), выполните необходимые действия (вызовите в обработчике данного события процедуры/функции)
и никаких ModalResult в данном случае не нужно...
P.S. И еще. Если нужно, чтобы при нажатии на кнопку сначала что-то отработало в GUI (какой-то код, например, та же анимация), а лишь потом выполнить что-то далее (в том же обработчике нажатия на кнопку), то Вам требуется синхронизация в основном потоке.