Если бы я был вами, звучит так, как будто вы имеете дело с большим количеством данных, и я бы разделил все "массирование", которое вы можете, в отдельный процесс потока.
Так, например, например, когда создается основная запись, вы «вручную» раскручиваете подробные данные в фоновом потоке к другому набору данных и делаете массаж, а затем просто привязываете полученный набор данных к сетке. Таким образом, единственное, что происходит в потоке пользовательского интерфейса - это просто привязка пользовательского интерфейса.
В конечном итоге, если это займет так много времени, возможно, вы приближаетесь к критической точке в вашем приложении, когда вам нужно вручную делать то, что вам нужно делать в коде, а не использовать готовые функции привязки данных в .NET.