Обновление
После небольшого расследования. Проблема, по-видимому, заключается в том, что 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 имеет два свойства (Text и Id). Мой XAML для ComboBox выглядит следующим образом.
1020 * 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. Привязка текстового поля, которую мы делаем, работает правильно.