我有一个datagrid,绑定到observable集合,允许操作符插入新行或通过“canc”键删除现有行。
根据此社区的其他帖子,删除操作已经以这种方式实现:
XAML:
<DataGrid Name="DiameterGrid" ItemsSource="{Binding} AutoGenerateColumns="False"
CanUserAddRows="True" CanUserDeleteRows="True" SelectionMode="Single" SelectionUnit="Cell" PreviewKeyDown="RollGrid_PreviewKeyDown">
代码背后:
...
DiameterGrid.ItemsSource = offer.diameters
...
Private Sub RollGrid_PreviewKeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
Dim myGrid As DataGrid = CType(e.Source, DataGrid)
Dim myRec As Diameter
If e.Key = Key.Delete Then
If myGrid.CurrentItem Is Nothing Then
MsgBox("Invalid record")
Else
myRec = CType(myGrid.CurrentItem, Diameter)
offer.diameters.Remove(myRec)
End If
End If
End Sub
删除操作正常,问题是当光标位于空行新行时,我有错误:
observable collection.exe中出现未处理的“System.InvalidCastException”类型异常
在演员操作myRec = CType(myGrid.CurrentItem,Diameter)上引发错误。
我尝试使用check:
检测光标在空白行上的位置myGrid.CurrentItem Nothing
以其他许多方式,但我找不到解决方案。
有什么建议吗? C#中的答案也可以......
提前感谢您的帮助