我如何识别我单击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检查鼠标下的哪个元素。
结帐此答案。