Saltar al contenido

Obtener el elemento de fila seleccionado en DataGrid WPF

Solución:

Puedes usar el SelectedItem para obtener el objeto seleccionado actualmente, que luego puede convertir en el tipo correcto. Por ejemplo, si tu DataGrid está vinculado a una colección de Customer objetos podrías hacer esto:

Customer customer = (Customer)myDataGrid.SelectedItem;

Alternativamente, puede enlazar SelectedItem a tu clase fuente o ViewModel.

<Grid DataContext="MyViewModel">
    <DataGrid ItemsSource="{Binding Path=Customers}"
              SelectedItem="{Binding Path=SelectedCustomer, Mode=TwoWay}"/>
</Grid>    

Si está utilizando el patrón MVVM, puede enlazar un SelectedRecord propiedad de su VM con SelectedItem del DataGrid, de esta manera siempre tendrá la SelectedValue en tu VM. De lo contrario, debería utilizar el SelectedIndex propiedad de DataGrid.

public IEnumerable<DataGridRow> GetDataGridRows(DataGrid grid)
{
    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) yield return row;
    }
}

private void DataGrid_Details_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    try
    {           
        var row_list = GetDataGridRows(DataGrid_Details);
        foreach (DataGridRow single_row in row_lis)
        {
            if (single_row.IsSelected == true)
            {
                MessageBox.Show("the row no."+single_row .GetIndex ().ToString ()+ " is selected!");
            }
        }

    }
    catch { }
}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *