WPF: ComboBox с выбранным набором элементов не использует SelectedIndex = 0? - PullRequest
1 голос
/ 02 июня 2010

Почему первый элемент моего всплывающего меню в выпадающем списке не отображается в области выбранного элемента

мой комбинированный список, когда я использую привязку 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, поскольку он действительно должен работать.

1 Ответ

2 голосов
/ 03 июня 2010

Это потому, что ссылка в вашей коллекции ItemsSource не совпадает с ссылкой в ​​вашем SelectedItem свойстве. Рискну предположить, что вы используете один контекст объекта для запроса к вашей базе данных списка SchoolclassSubject объектов, с которыми связан ItemsSource, но другой контекст для запроса фактического элемента данных, с которым вы связываете SelectedItem , Несмотря на то, что список содержит ссылку, которая представляет значение, хранящееся в вашем объекте, на самом деле это не та же ссылка, а отдельный экземпляр тех же данных.

Существуют способы решения этой проблемы, большинство из которых включают использование SelectedValuePath и SelectedValue вместо SelectedItem свойств, но конкретное решение будет отличаться в зависимости от вашего конкретного ORM.

...