2016-07-03 10 views
0

Ich weiß, dass ich PreviewKeyDown Ereignis, um eine Zeile in Datagrid zu löschen, damit ich diesen Code habe in der Benutzeroberfläche verwenden sollte:Wie löscht man eine Zeile aus dem DataGrid-Steuerelement in WPF?

<DataGrid Name="dgPlaces" 
      AutoGenerateColumns="True" 
      ItemsSource="{Binding Places}" 
      PreviewKeyDown="dgPlaces_PreviewKeyDown" 
    /> 

Dann habe ich diesen Code in dem Code-Behind:

private void dgPlaces_PreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key == Key.Delete) 
    { 
     if (dgPlaces.SelectedItems.Count > 0) 
     { 
      foreach (var row in dgPlaces.SelectedItems) 
      { 
       //here should be delete logic for each row 
      } 
     } 
    } 
} 

ich habe diesen Code in das Ansichtsmodell:

public class ViewModel //: INotifyPropertyChanged 
{ 
    public ViewModel() 
    { 

    } 

    private ObservableCollection<Place> places = new ObservableCollection<Place>() 
    { 
     new Place { Id = 1, City = "New York", Country = "US" }, 
     new Place { Id = 2, City = "Chicago", Country = "US" }, 
     new Place { Id = 3, City = "Miami", Country = "US" } 
    }; 

    public ObservableCollection<Place> Places 
    { 
     get 
     { 
      return places; 
     } 
     set 
     { 
      places = value; 
      RaisePropertyChanged("Places"); 
     } 
    } 
} 

und in der Modellklasse I Id, Stadt und Land Eigenschaften haben:

Meine Frage bezieht sich auf die Schleife in der CodeBehind-Datei: Wie kann ich die ID aus der Zeile dort entfernen, damit die Anwendung wissen kann, welche Zeile gelöscht werden soll?

foreach (var row in dgPlaces.SelectedItems) 
{ 
    //here should be delete logic for each row 
} 

Warum kann ich nicht einfach setzen. nach Zeile und dann Id von IntelliSense? Ich verstehe es nicht. nur

Antwort

1

DataGrid.SelectedItems Eigenschaft ist nicht generisch, es IList ist, hat rowobject Typ, es sei denn, genaue Art wie dies angegeben ist:

foreach (Place row in dgPlaces.SelectedItems) 
{ 

} 
+0

Es funktioniert. Danke, Mann! :) – vvasovic