[英]How to delete a row from DataGrid control in WPF?
我知道我應該使用PreviewKeyDown事件來刪除DataGrid中的一行,所以我在UI中有以下代碼:
<DataGrid Name="dgPlaces"
AutoGenerateColumns="True"
ItemsSource="{Binding Places}"
PreviewKeyDown="dgPlaces_PreviewKeyDown"
/>
然后,我在后面的代碼中有此代碼:
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
}
}
}
}
我在ViewModel中有以下代碼:
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");
}
}
}
在Model類中,我具有Id,City和Country屬性:
public class Place
{
public int Id { get; set; }
public string City { get; set; }
public string Country { get; set; }
}
我的問題與代碼隱藏文件內部的循環有關:如何從那里的行中擴展ID,以便應用程序知道應該刪除哪一行?
foreach (var row in dgPlaces.SelectedItems)
{
//here should be delete logic for each row
}
為什么我不能放。 后排,而不是從IntelliSense獲得ID? 我不明白
DataGrid.SelectedItems
屬性是非泛型的,僅是IList
, row
具有object
類型,除非這樣指定確切類型:
foreach (Place row in dgPlaces.SelectedItems)
{
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.