Ok, this has been bugging me for a while now. And I wonder how others handle the following case:
After loosing half of my head hairs and smashing my keyboard several times, i think that for the combobox control, it is preferable not to write the selectedItem,Selectedindex and ItemsSource binding expression in the XAML as we cannot check whether the ItemsSource has changed, when using ItemsSource property of course.
In the window or user control constructor i set the ItemsSource property of the Combobox then in the loaded event handler of the window or user control, i set the binding expression and it work perfectly. If i would set ItemsSource binding expression in the XAML without the "selectedItem" one, i wouldn't find any event handler to set the SelectedItem binding expression while preventing the combobox to update source with a null reference (selectedIndex = -1).
The real solution to this problem is to not remove the items that are in the new list. IE. Don't clear the whole list, just remove the ones that are not in the new list and then add the ones that new list has that were not in the old list.
Example.
Current Combo Box Items Apple, Orange, Banana
New Combo Box Items Apple, Orange, Pear
To Populate the new items Remove Banana and Add Pear
Now the combo bow is still valid for items that you could have selected and the items are now cleared if they were selected.