Laden...

Listview - Item löschen, dann falsche Zeile selektiert

Erstellt von visionmaster vor 3 Jahren Letzter Beitrag vor 3 Jahren 650 Views
V
visionmaster Themenstarter:in
77 Beiträge seit 2009
vor 3 Jahren
Listview - Item löschen, dann falsche Zeile selektiert

Ich habe folgendes Problem:
Ich lösche in einer ListView bei Betätigung eines keys (implementiert im _PreviewKeyDown-Event der ListView) eine Zeile mit <listview>.Items.Remove(<listview>.SelectedItem)
Das funktioniert auch problemlos. Allerdings ist anschließend immer der erste Eintrag in der ListView selektiert (nicht, wie gewünscht der Folgeeintrag).
Setze ich den auf das gelöschte Element folgenden Eintrag als selektiertes Element mit
<listview>.SelectedItem = <folgeeintrag>
so hat das keinerlei Wirkung, wenn ich dies in der gleichen Routine tue.

Nehme ich den .SelectedItem-Befehl in ein anderes event (z.B. das _KeyUp-Event der ListView) oder auf einen Button dann funktioniert es.
Allerdings sieht man dann einen Rahmen um das erste Element der ListView und wenn man z.B. den Down-Button betätigt um auf dei nächste Zeile zu springen, so springt er dann auf Zeile 2.
Setze ich anschließend jedesmal die selektierte Zeile selbst richtig, so sieht man, wie quasi zwei Zeilen selektiert sind (die eine mit Rahmen, die andere, von mir gesetzte).

Ich weiß, das klingt recht verworren.
Was ist hier los? Was mache ich falsch bzw. wie muss ich es richtig machen?
hat jemand eine Idee?

4.931 Beiträge seit 2008
vor 3 Jahren

Du mußt wissen: es gibt Selektion und Fokussierung (der Eintrag mit dem gestrichelten Rahmen - für Tastatursteuerung, s.a. Set Item Focus in ListView WPF).

Wenn du dasselbe wie das Markieren (Selektieren) mit der Maus erreichen möchtest, dann mußt du beides setzen.

Außerdem liest es sich so, daß du noch kein MVVM verwendest: [Artikel] MVVM und DataBinding (das ist bei WPF dringend anzuraten).

V
visionmaster Themenstarter:in
77 Beiträge seit 2009
vor 3 Jahren

@Th69: Das war es. Jetzt funktioniert alles perfekt.
Da wäre ich echt niemals drauf gekommen!
Ganz vielen Dank für die schnelle Hilfe.
Viele Grüße!