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)