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
Es funktioniert. Danke, Mann! :) – vvasovic