如何判断DataGrid的哪一行被点击?

问题描述:

我有一个DataGrid它充满了一个对象列表。 它有一个MouseDoubleClick事件。如何判断DataGrid的哪一行被点击?

我想知道哪一行恰好是DataGrid被点击了

到目前为止,我已经试过这样:

private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) 
{ 
    DataGridRow Row = sender as DataGridRow; 
    int RowNumber = Row.GetIndex(); 
    //dostuff with RowNumber ; 
} 

这可悲的是得到我System.NullReferenceException

XAML的完整性:

<DataGrid x:Name="DataGrid_Table" Grid.Row="3" AutoGenerateColumns="True" ItemsSource="{Binding}" IsReadOnly="True" 
     MouseDoubleClick="DataGrid_MouseDoubleClick" FontSize="22" /> 
+1

你得到空异常,因为它是发送该事件的网格(DataGrid中),并尝试转换/它转换为一个'DataGridRow'。您可能需要'DataGrid.SelectedIndex',它将指示'SelectedItem'或当前选定的网格行的索引。请注意,该索引是零索引。 – Nkosi

+1

[WPF datagrid选择行单击事件?]的可能重复(https://*.com/questions/3120616/wpf-datagrid-selected-row-clicked-event) – Alexander

你得到空异常,因为它是发送该事件的网格(DataGrid中),并尝试转换/它转换为DataGridRow。您可能需要DataGrid.SelectedIndex这将指示SelectedItem或当前选定的网格行的索引。请注意,该索引是零索引。

private void DataGrid_MouseDoubleClick(object sender, MouseButtonEventArgs e) { 
    var dataGrid = sender as DataGrid; 
    if (dataGrid != null) { 
     var index = dataGrid.SelectedIndex; 
     //dostuff with index 
    } 
}