【问题标题】:How to tell which row of DataGrid was clicked?如何判断 DataGrid 的哪一行被点击了?
【发布时间】:2017-11-20 02:57:09
【问题描述】:

我有一个DataGrid,里面有一个对象列表。 它有一个MouseDoubleClick 事件。

我正在尝试找出 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 的索引或当前选定的网格行。请注意,该索引是零索引的。

标签: c# wpf xaml datagrid


【解决方案1】:

您得到空异常,因为它是发送事件的网格 (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
    }
}

【讨论】:

    猜你喜欢
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    • 2013-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多