2017-12-28 41 views
1

entfernen Ich habe ein Datagrid, die eine Liste der Kontakte gebunden:Kann nicht SelectedItem in Datagrid

<DataGrid ItemsSource="{Binding Contacts" 
      SelectionMode="Single" 
      SelectionChanged="LoadContactInfo" 
      x:Name="ContactsGrid" 
      ... 

Der Benutzer kann ein Element (Kontakt) auszuwählen, und die Methode LoadContactInfo wird Brennen, diese Methode laden Sie die Informationen von die SelectedItem.

Jetzt jedes Element, ein Kontrollkästchen, wenn der Benutzer es drücken, wird der Kontakt aus der Contacts Sammlung gelöscht werden. Alles funktioniert gut, aber es gibt ein Problem, insbesondere die DataGrid SelectedItem wird zum nächsten Kontakt in der Sammlung wechseln.

Ich habe versucht, diese Situation zu beheben, um die SelectedItem im LoadContactInfo Ereignisse zu entfernen:

Contacts.SelectedItem = null; 

aber ich habe auch das gleiche Problem, wie kann ich dieses Problem beheben? Vielen Dank.

Antwort

0

Sie können eine DataGrid-Zeile nicht entfernen, indem Sie nur einen Nullwert zuweisen.

Aber Sie können das über die Rows-Eigenschaft tun und die Remove-Methode aufrufen.

var selectedItem = ContactsGrid.SelectedItem; 
ContactsGrid.Rows.Remove(selectedItem); 

Es ist cool zu überprüfen, ob das ausgewählte Element nicht vorher null ist.

+0

Dank für die Antwort, aber ich muss nicht '.Rows' Eigenschaft, warum? – MrFantastic

+0

@MrFantastic Sorry, ich bin verwirrt. Versuchen Sie die "Items" -Eigenschaft – PedroJ

+0

Ich entferne bereits den Kontakt aus der ItemSource, aber das DataGrid wechselt das ausgewählte Item auf den nächsten. – MrFantastic

0

Wenn Sie die ItemsSource-Eigenschaft verwenden, ist es besser, das Element aus Ihren Daten zu entfernen. Kontakte sollten INotifyCollectionChanged implementieren oder eine ObservableCollection sein. Versuchen Sie SelectedIndex auf -1 festzulegen.

+0

Überprüfen Sie die aktualisierte Antwort –

0

Einfache Lösung:

ContactsGrid.UnselectAll(); 
Verwandte Themen