我正在执行MVVM,其中将DataGrid绑定到ObservableCollection,并使用DeleteItemCommand如下所示连接到DataGrid.InputBindings:
<DataGrid.InputBindings>
<KeyBinding Key="Delete" Command="{Binding DeleteItemCommand}" />
</DataGrid.InputBindings>
当用户按下Delete键但网格失去焦点时,将删除项目和行。您必须单击或制表到网格,以便在单击“删除”以删除另一行之前,它可以重新获得焦点(非常令人讨厌)。我尝试设置DataGrid.CanUserDeleteRows =“ False”,但没有任何区别。
我用ListView替换了DataGrid,并且ListView保持了焦点。
这是DataGrid的错误,还是我做错了什么?和平与爱,和平与爱!
我通过使用WPF DataGrid的内置功能解决了这个问题。如果基础集合是可编辑的,则网格默认会处理删除项(如果该集合专用于此目的,那没问题,否则可以添加中间集合...)。我避免了任何键绑定,而是像这样设置网格:<DataGrid ItemsSource="{Binding InvoiceItems}" IsReadOnly="False" CanUserDeleteRows="True" CanUserAddRows="False">
ItemsSource集合的类型为BidningCollection <>
不久前我碰碰到了。不知何故此事件从未引发。尝试this approach。
您是否检查过此答案?
我不得不以与jl.'s answer不同的方式解决该问题,因为它无法进行任何[[之前