Обновление
После нескольких исследований. Кажется, что проблема заключается в том, что SelectedValue/SelectedItem происходит до того, как исходный объект Item завершил загрузку. Если я сижу в точке останова и жду несколько секунд, он работает так, как ожидалось. Не знаю, как я собираюсь обойти этот.
Окончательное обновление
У меня есть приложение, использующее в WPF с использованием MVVM с ComboBox. Ниже приведен пример ViewModel. Проблема, с которой я столкнулась, - это когда мы покидаем нашу страницу и возвращаем обратно, ComboBox не выбирает текущее значение, которое выбрано.
Показать модель
public class MyViewModel
{
private MyObject _selectedObject;
private Collection<Object2> _objects;
private IModel _model;
public MyViewModel(IModel model)
{
_model = model;
_objects = _model.GetObjects();
}
public Collection<MyObject> Objects
{
get
{
return _objects;
}
private set
{
_objects = value;
}
}
public MyObject SelectedObject
{
get
{
return _selectedObject;
}
set
{
_selectedObject = value;
}
}
}
Для этого примера можно сказать, что MyObject имеет два свойства (текст и идентификатор). Мой XAML для ComboBox выглядит следующим образом.
XAML
<ComboBox Name="MyComboBox" Height="23" Width="auto"
SelectedItem="{Binding Path=SelectedObject,Mode=TwoWay}"
ItemsSource="{Binding Objects}"
DisplayMemberPath="Text"
SelectedValuePath="Id">
Независимо от того, каким образом я настрою это, когда вернусь на страницу, и объект будет повторно собран, ComboBox не будет выбирать значение. Объект возвращает правильный объект через get в свойстве.
Я не уверен, что это просто проблема с тем, как работает ComboBox и MVVM. Связывание текстового поля, которое мы делаем, работает правильно.