Я создал выпадающий и TextBlock привязываться к тому же собственности ViewModelC# ComboBox связывания показывают неправильно выбранный элемент
<ComboBox ItemsSource="{Binding LanguagesViewModel.Items}"
ItemTemplate="{StaticResource ComboBoxLanguageTemplate}"
SelectedItem="{Binding LanguagesViewModel.SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsSynchronizedWithCurrentItem="True"
/>
<TextBlock Text="{Binding LanguagesViewModel.SelectedItem.Language}" />
Результат это показывает мне неправильно SelectedItem в выпадающем списке (всегда первый). Textblock всегда имеет правильное значение. Когда я выбираю другое значение в combobox, текстовый блок правильно обновляется. Если удалить
IsSynchronizedWithCurrentItem = "True"
затем выпадающий показывает "пустое" значение. SelectedItem of Language должен иметь правильный объект (путем отладки).
LanguageViewModel состоит из непреодолимого коллекционирования языка. Язык модель реализована переопределение приравнивает и gethascode (по ReSharper) и один строковый атрибут Язык:
protected bool Equals(LanguageModel other)
{
return string.Equals(_language, other._language);
}
public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != this.GetType()) return false;
return Equals((LanguageModel) obj);
}
public override int GetHashCode()
{
return (_language != null ? _language.GetHashCode() : 0);
}
Что изменить, что выпадающий показывает правый деталь?
как установить/получить _LanguagesViewModel.SelectedItem_? – Ron
'LanguagesViewModel.SelectedItem = Show.LanguageLink;' Его срабатывает при настройке другого шоу. – Crooker
Проблемы в том, что вы выбрали выбранный элемент неправильно, вам нужно установить выбранный элемент в качестве одного из списка «LanguagesViewModel.Items». Вот почему вы ComboBox не можете показать это правильно, нет такого элемента в ComboBox и он не может его выбрать. – Shakra