簡體   English   中英

如何從WPF中的DataGrid控件中刪除行?

[英]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屬性是非泛型的,僅是IListrow具有object類型,除非這樣指定確切類型:

foreach (Place row in dgPlaces.SelectedItems)
{

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM