So far in this tutorial, we have mostly created bindings between UI elements and existing classes, but in real life applications, you will obviously be binding to your own data objects.
In this case, the selecteditem bind doesn't work, because the hash id of the objects are different.
One possible solution is: Based on the selected item id, recover the object on the itemsource collection and set the selected item property to with it.
What seems to be the issue is that the Selected Value/Selected Item is occurring before the Item source is finished loading.
If I sit in a break point and wait a few seconds it works as expected. End Update I have an application using in WPF using MVVM with a Combo Box. The issue I'm having is when we leave our page and migrate back the Combo Box is not selecting the current Value that is selected.
On the load event, the Key Type was getting set to null. None of the sub elements would get updated when the key changed. ) The fix was overwriting the Equals(object obj) method for the type selected in the Combo Box (Brush), which wasnt simple because Brush is sealed.
It turned out that when I added a check to make sure the proposed value for Key Type was not null, everything worked as expected. So i wrote a class Equality Brush containing a Brush and implementing Equals: It could be the way you are applying the Data Context to the Page.
How to handle them may vary, depending on what you're doing and what you're looking to accomplish, but WPF comes with two very easy solutions that you can use: The Observable Collection and the INotify Property Changed interface.
The following example will show you why we need these two things: Try running it for yourself and watch how even though you add something to the list or change the name of one of the users, nothing in the UI is updated.
In order to avoid that use the Keep Alive property of your pages.
This will result in only the Loaded event being fired when navigating back to a page you have already visited.
I'm not sure if this is just an issue with the way the Combo Box and MVVM pattern works. I have had similar issues and it was solved by making sure I was implementing IEquatable properly.