In order to populate your distinct values asynchronously, you will have to assign e.ItemsSource first to some ObservableCollection before the method returns and then you can populate this observable collection asyncrhonously.
For example, you can create an empty ObservableCollection in the method and assign it to e.ItemsSource before doing anything else. Then in your async callback you can fill this exact same collection with the data.
I have attached a demo solution which I hope you can use in your case.
Check out the Telerik Platform - the only platform that combines a rich set of UI tools with powerful cloud services to develop web, hybrid and native mobile apps.