I’ve run into an issue I was surprised I couldn’t find any discussion about (except WPF MVVM ComboBox SelectedItem or SelectedValue not working maybe).
I have a MVVM form that has 2 ctors, one is for “new item creation”, the other is for “item modification”. I have a combobox that represents one of the item’s properties.
In the modification ctor, the property bound to ItemsSource is initialized, and then the property bound to SelectedItem is set. But nothing is selected in the UI, unless I delay (even a tiny bit) the SelectedItem set.
How can I solve this ? I decently can’t keep a timer with a totally random interval to fix the issue 😀
Thank you for your help
It seems like the elegant way to ensure the ItemsSource is initialized before I set the SelectedItem from VM is to have the binding source of ItemsSource (whatever it is) declared in my view resources.
I’m sure someone can lead me to the light now that I’ve pointed that out.
I have tried with a CollectionViewSource but didn’t find the way to use its Filter capability without breaking the MVVM pattern. Plus I don’t know how to re-raise the Filter as I used to with ICollectionView.Filter (filtered-out items depend on another combobox selection, nothing really fanciful imo).
Perhaps the resource declared in the view and used as ItemsSource has not necessarily to be a CVS, I’m looking for suggestions here.
–Edit–
I found out that the IsSynchronizedWithCurrentItem=”True” solution spread all over the web is actually working. I was mislead because it didn’t fix my problem at first try due to a remaining SelectedValuePath that wasn’t used anymore on my control.