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と同じではないためです。1 つのオブジェクト コンテキストを使用して がバインドされているオブジェクトSelectedItemのリストをデータベースにクエリしているが、別のコンテキストを使用して がバインドされている実際のデータ項目をクエリしていると思います。オブジェクトが保持する値を表す参照がリストに含まれていても、それは実際には同じ参照ではなく、同じデータの別のインスタンスです。SchoolclassSubjectItemsSourceSelectedItem

この問題を解決する方法はいくつかあります。ほとんどの場合、プロパティの代わりにSelectedValuePathandを使用しますが、具体的な解決策は特定の ORM によって異なります。SelectedValueSelectedItem

于 2010-06-02T20:00:32.160 に答える