i think this post will help:
https://stackoverflow.com/questions/23108045/how-to-make-observablecollection-thread-safe
I think the issue u r running into is based on how u r handling the observable collections in your view model. Two things:
1 - you must lock them (see article above)
2 - Once you assign them do NOT re-assign them because that will break the binding
(ie, once u do this: var _regions = new ObservableCollection<Regions>(); do _not_ do this....._regions = some_new_list.
I also added virtualization to your region combo box. It was choking if u hit the dropdown _before_ selecting a commune (i was getting some 50,000 odd regions in the collection for the area i was using). Without virtualization, the combobox freezes when trying to fill the dropdown if there are too many values in the Regions list.
look at this post for help on virtualization: https://stackoverflow.com/questions/8198645/wpf-combobox-performance-problems-by-binding-a-large-col...
With your permission i will add the zip to the post containing the downloaded code from your repo w/my edits