Возможно, стоит попробовать вызвать код с анимацией, используя объект Dispatcher.Установив приоритет диспетчера, вы можете отложить выполнение, например, до тех пор, пока все привязки данных (даже асинхронные) не будут завершены.
// Schedule the update function in the UI thread.
Dispatcher.BeginInvoke(
System.Windows.Threading.DispatcherPriority.Loaded, ...);
, если это не сработает, попробуйте изменить приоритет - чем ниже приоритет, тем позже ваше действиебудет вызван.