Hi sanvi,
Refer below sample code.
HTML
<DataGrid Height="130" Width="310" HorizontalAlignment="Left" Margin="12,21,0,0" AutoGenerateColumns="False"
Name="dgCustomers" VerticalAlignment="Top" RowHeight="25" ColumnWidth="80" >
<DataGrid.Columns>
<DataGridTextColumn Header = "Id" Binding = "{Binding ID}" />
<DataGridTextColumn Header = "Name" Binding = "{Binding Name}" />
<DataGridTextColumn Header = "Country" Binding = "{Binding Country}"/>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Click="Button_Click_dgvs">Get</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Code
C#
public MainWindow()
{
InitializeComponent();
dgCustomers.ItemsSource = LoadCollectionData();
}
private List<Customer> LoadCollectionData()
{
List<Customer> customers = new List<Customer>();
customers.Add(new Customer { ID = 1, Name = "Mudassar Khan", Country = "India", });
customers.Add(new Customer { ID = 2, Name = "John Hammod", Country = "USA", });
customers.Add(new Customer { ID = 3, Name = "Suzzain Mathew", Country = "France", });
return customers;
}
public class Customer
{
public int ID { get; set; }
public string Name { get; set; }
public string Country { get; set; }
}
void Button_Click_dgvs(object sender, RoutedEventArgs e)
{
for (var vis = sender as Visual; vis != null; vis = VisualTreeHelper.GetParent(vis) as Visual)
if (vis is DataGridRow)
{
var rows = GetDataGridRowsForButtons(dgCustomers);
foreach (DataGridRow dr in rows)
{
int id = (dr.Item as Customer).ID;
string name = (dr.Item as Customer).Name;
string country = (dr.Item as Customer).Country;
MessageBox.Show("Id : \t" + id.ToString() + "\nName : \t" + name + "\nCountry : " + country);
break;
}
break;
}
}
private IEnumerable<DataGridRow> GetDataGridRowsForButtons(DataGrid grid)
{ //IQueryable
var itemsSource = grid.ItemsSource as IEnumerable;
if (null == itemsSource) yield return null;
foreach (var item in itemsSource)
{
var row = grid.ItemContainerGenerator.ContainerFromItem(item) as DataGridRow;
if (null != row & row.IsSelected) yield return row;
}
}
Screenshot
