首先将CanUserDeleteRows设置为False,
其次是设置KeyUp事件
并自定义DataGrid.Columns修改如下
<DataGrid x:Name="DG" KeyUp="DG_KeyUp" ItemsSource="{Binding }" CanUserDeleteRows="False" AutoGenerateColumns="True"> <DataGrid.Columns> <DataGridCheckBoxColumn Header="SingleCheckBox"> <DataGridCheckBoxColumn.CellStyle> <Style TargetType="DataGridCell"> <Setter Property="ContentTemplate" > <Setter.Value> <DataTemplate> <CheckBox x:Name="CB" Click="CB_Click"/> </DataTemplate> </Setter.Value> </Setter> </Style> </DataGridCheckBoxColumn.CellStyle> </DataGridCheckBoxColumn> </DataGrid.Columns> </DataGrid>
在CS页面修改:
定义一个List<DataRow> dataRow 集合用来存储DataTable的Row
修改CheckBox的Click事件
如下
//数据源
public DataTable dataTable;
public List<DataRow> dataRow = new List<DataRow>(); private void CB_Click(object sender, RoutedEventArgs e) { if (DG.SelectedItem != null) { var row = DG.SelectedItem as DataRowView; dataRow.Add(row.Row); } }
修改DataGrid的KeyUp事件如下
private void DG_KeyUp(object sender, KeyEventArgs e) { if(e.Key==Key.Delete) { if (dataRow.Count> 0) { for (var item = 0; item < dataRow.Count; item++) { dataTable.Rows.Remove(dataRow[item]); } dataRow.Clear(); } } }
最终截图
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/12638.html