我创建组合框和文本块绑定到视图模型C#组合框绑定错误显示所选项目
<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属性(永远是第一位)的同一属性。文本块始终是正确的值。当我在组合框中选择不同的值时,文本块会正确更新。如果删除
IsSynchronizedWithCurrentItem = “真”
然后组合框表示 “空” 值。 SelectedItem of Language应该有正确的对象(通过调试)。
LanguageViewModel包含语言模型的obsertvablecollection。语言模型已经实施首要等于和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