我正在制作WPF应用程序,目前我在使用DataGrid中的所选项目从ObservableCollection中删除项目时遇到问题。 DataGrid使用ObservableCollection作为其ItemsSource。在我开始对列进行排序之前,我做了一些似乎有用的东西:
Private Sub confirmDelete()
Dim userAnswer As MessageBoxResult
userAnswer = MessageBox.Show("Are you sure?", "Delete Selected Items?", MessageBoxButton.YesNo)
If userAnswer = MessageBoxResult.Yes Then
Dim index As Integer
For i As Integer = grdReadings.SelectedItems.Count - 1 To 0 Step -1 'step backwards through list
index = grdReadings.Items.IndexOf(grdReadings.SelectedItems(i))
testDataList.RemoveAt(index)
Next
End If
End Sub
因此,如果我从未按照DataGrid中的任何列进行排序,这样可以正常工作,但只要我按照与添加项目不同的顺序对DataGrid进行排序,DataGrid中所选项目的索引就不会出现。 t匹配ObservableCollection中的那些项目索引。是否有更好/更简单的方法使用用户在DataGrid中选择的项目从ObservableCollection中删除项目?
答案 0 :(得分:0)
您可以直接删除项目
,而不是查找索引Private Sub confirmDelete()
Dim userAnswer As MessageBoxResult
userAnswer = MessageBox.Show("Are you sure?", "Delete Selected Items?", MessageBoxButton.YesNo)
If userAnswer = MessageBoxResult.Yes Then
For each item in grdReadings.SelectedItems
testDataList.Remove(item)
Next
End If
End Sub
答案 1 :(得分:0)
这就是我的所作所为:
Dim itemsToRemove As New List(Of CCReading)
For Each item In grdReadings.SelectedItems
itemsToRemove.Add(item)
Next
For Each item In itemsToRemove
testDataList.Remove(item)
Next
itemsToRemove.Clear()