Design
<UserControl x:Class="SL4_Deleting_Multiple_Rows_DataGrid.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:data="clr-namespace:SL4_Deleting_Multiple_Rows_DataGrid"
mc:Ignorable="d"
d:DesignHeight="327" d:DesignWidth="637"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
Loaded="UserControl_Loaded">
<UserControl.Resources>
<data:EmployeeCollection x:Key="EmpDs"></data:EmployeeCollection>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White"
DataContext="{Binding Source={StaticResource EmpDs}}">
<sdk:DataGrid AutoGenerateColumns="False" Height="227"
HorizontalAlignment="Left" Margin="25,23,0,0"
Name="dataGrid1" VerticalAlignment="Top" Width="584"
ItemsSource="{Binding}" >
<sdk:DataGrid.Columns>
<sdk:DataGridTextColumn Header="EmpNo"
Binding="{Binding EmpNo}">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="EmpName"
Binding="{Binding EmpName}">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="Salary"
Binding="{Binding Salary}">
</sdk:DataGridTextColumn>
<sdk:DataGridTextColumn Header="Designation"
Binding="{Binding Designation}">
</sdk:DataGridTextColumn>
<sdk:DataGridTemplateColumn Header="Delete?">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<CheckBox Name="chkbkDelete"
Click="chkbkDelete_Click"></CheckBox>
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
</sdk:DataGrid.Columns>
</sdk:DataGrid>
<Button Content="Delete Selected Rows" Height="23"
HorizontalAlignment="Left" Margin="25,267,0,0"
Name="btnDeleteRows" VerticalAlignment="Top"
Width="245" Click="btnDeleteRows_Click" />
</Grid>
</UserControl>
The CheckBox in the DataGrid Template Column defines the Click event.
When any checkbox is checked, that row from the DataGrid is considered
marked for deletion.
Coding
using System;
using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Collections.ObjectModel;
namespace SL4_Deleting_Multiple_Rows_DataGrid
{
public partial class MainPage : UserControl
{
ObservableCollection<Employee> EmptoDelete;
public MainPage()
{
InitializeComponent();
}
private void chkbkDelete_Click(object sender, RoutedEventArgs e)
{
CheckBox chbkDelete = sender as CheckBox;
bool? res = chbkDelete.IsChecked;
if ((bool)res)
{
EmptoDelete.Add(dataGrid1.SelectedItem as Employee);
}
else
{
EmptoDelete.Remove(dataGrid1.SelectedItem as Employee);
}
}
private void btnDeleteRows_Click(object sender, RoutedEventArgs e)
{
try
{
EmployeeCollection EmpCol =
this.Resources["EmpDs"] as EmployeeCollection;
if (EmptoDelete.Count > 0)
{
int count = 0;
foreach (Employee Emp in EmptoDelete)
{
Employee emp = (from ep in EmpCol
where ep.EmpNo == Emp.EmpNo
select ep).First();
EmpCol.Remove(emp);
count++;
}
EmptoDelete.Clear();
MessageBox.Show(count + "'s Rows Deleted");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
EmptoDelete = new ObservableCollection<Employee>();
}
}
}