为什么我的组合框弹出菜单中的第一个元素未显示在
的所选项目区域中我的组合框,当我使用SelectedItem绑定时?没有它就会出现?使用
相同的代码selectitem + selectedindex没问题!
<ComboBox
ItemsSource="{Binding SchoolclassSubjectViewModels}"
SelectedItem="{Binding SelectedSchoolclassSubjectViewModel}"
SelectedIndex="0"
Height="23"
HorizontalAlignment="Left"
Margin="375,13,0,0"
VerticalAlignment="Top"
Width="151">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding SchoolclassName}" />
<TextBlock Text=" " />
<TextBlock Text="{Binding SubjectName}" />
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我使用的解决方法是:
SchoolclassSubjectViewModels.Add(schoolclassSubjectVM);
SelectedSchoolclassSubjectViewModel = schoolclassSubjectVM;
和此:
SelectedItem="{Binding SelectedSchoolclassSubjectViewModel,Mode=TwoWay}"
但我更喜欢xaml,因为它应该真的有用。
答案 0 :(得分:2)
这是因为ItemsSource
集合中的引用与SelectedItem
属性中的引用不同。我冒昧地猜测你正在使用一个对象上下文来查询数据库中SchoolclassSubject
被绑定的ItemsSource
对象的列表,而另一个上下文来查询绑定到的实际数据项SelectedItem
。即使列表包含表示对象所持有的值的引用,它也不是相同的引用,而是相同数据的单独实例。
有很多方法可以解决这个问题,其中大多数都涉及使用SelectedValuePath
和SelectedValue
而不是SelectedItem
属性,但具体的解决方案会因您的特定ORM而有所不同