WPF 在数据网格上向下鼠标 => 获取列和行



我如何识别我单击DataGrid的位置?

<DataGrid x:Name="TheGrid" SelectionMode="Single" SelectionUnit="Cell" MouseDown="CellClick">
private void CellClick(object sender, MouseButtonEventArgs e)
{
    foreach (DataGridCellInfo cell in TheGrid.SelectedCells)
    {
        MessageBox.Show(TheGrid.Items.IndexOf(cell.Item).ToString());
    }
}

非常感谢

您可以处理这样的SelectedCellsChanged事件:

private void TheGrid_SelectedCellsChanged(object sender, SelectedCellsChangedEventArgs e)
{
    if (TheGrid.SelectedCells.Count > 0)
    {
        DataGridCellInfo dgci = TheGrid.SelectedCells[0];
        int columnIndex = dgci.Column.DisplayIndex;
        DataGridRow row = TheGrid.ItemContainerGenerator.ContainerFromItem(dgci.Item) as DataGridRow;
        int rowIndex = row.GetIndex();
        MessageBox.Show($"Row {rowIndex} Column {columnIndex}");
    }
}

一个单元将在鼠标UP上选择。要在此事件发生之前获取单元格,您将必须在数据杂志上的Mousedown上收听,并使用VisualTreeHelper.hittest检查鼠标下的哪个元素。
结帐此答案。

最新更新