1

为什么我的组合框弹出菜单中的第一个元素未显示在的选定项目区域中

我的组合框,当我使用 SelectedItem 绑定时?没有它就出现了??使用

同样的代码selecteditem + 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 唯一的方式,因为它应该真的有效。

4

1 回答 1

2

这是因为您的ItemsSource集合中的引用与您的SelectedItem属性中的引用不同。我冒昧地猜测您正在使用一个对象上下文来查询您的数据库以获取绑定到的SchoolclassSubject对象列表ItemsSource,但是另一个上下文来查询您绑定到的实际数据项SelectedItem。即使列表包含一个表示对象所持有值的引用,它实际上并不是相同的引用,而是相同数据的单独实例。

有很多方法可以解决这个问题,其中大多数涉及使用SelectedValuePathandSelectedValue而不是SelectedItem属性,但具体的解决方案会因您的特定 ORM 而异。

于 2010-06-02T20:00:32.160 回答