如何判断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" />
答
你得到空异常,因为它是发送该事件的网格(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
}
}
你得到空异常,因为它是发送该事件的网格(DataGrid中),并尝试转换/它转换为一个'DataGridRow'。您可能需要'DataGrid.SelectedIndex',它将指示'SelectedItem'或当前选定的网格行的索引。请注意,该索引是零索引。 – Nkosi
[WPF datagrid选择行单击事件?]的可能重复(https://*.com/questions/3120616/wpf-datagrid-selected-row-clicked-event) – Alexander