Hallo zusammen,
ich habe ein sehr merkwürdiges Verhalten in einer WPF ListView (genauso wenn ich eine ComboBox oder ListBox verwende).
Folgender XAML-Code:
<ListView ItemsSource="{Binding Path=Catalogs.Ortsteile}"
SelectedItem="{Binding Path=Schueler.Ortsteil}"
DisplayMemberPath="Bezeichnung"
ToolTip="{Binding Path=Schueler.Ortsteil.Bezeichnung}"
SelectionMode="Single"
Height="80">
</ListView>
Dem DataContext des beinhaltenden UserControls ist ein ViewModel zugeordnet, das (u .a.) die Properties Catalogs und Schueler beinhaltet.
Ergebnis:
Ich habe die identische Vorgehensweise schon häufig erfolgreich angewandt. Ich stehe vollkommen auf dem Schlauch, warum das hier nicht funktionieren soll.
Vielleicht noch der Zusammenhang:
Ich habe in einem übergeordneten UserControl eine Liste von Schuelern. Wenn ich dort einen Schüler selektiere, wird über ein SelectionChangedCommand die Schueler-Property des im DataContext gebundenen ViewModels gesetzt. NotifyPropertyChanged wird aufgerufen.
Hat evtl. jemand einen Tipp, was ich noch kontrollieren kann?
Meine Vermutung: Ortsteil != Ortsteil aufgrund doppelt oder an unterschiedlichen Stellen erzeugter Objekte.
Wichtig ist hier die Gleichheit der Objekte: Wenn du die Objekte in deiner Liste und im Schüler nicht identisch sind, werden diese auch nicht automatisch selektiert.
Wenn das der Grund ist, kannst du entweder dafür sorgen, dass jeder Schüler nur Ortsteil Objekte aus dem bestehenden Ortsteile-Pool bekommt oder du überschreibst die Equals Methode und vergleichst intern auf Id oder sonst was.
Lg, XXX