wpf 获取datagrid行拖拽之后的位置
时间: 2023-10-10 15:07:45 浏览: 123
要获取 DataGrid 行拖拽之后的位置,可以使用 DataGrid 的 `Drop` 事件。在这个事件中,可以通过 `DragEventArgs` 参数获取拖拽操作的源和目标。以下是一个示例代码:
```csharp
private void MyDataGrid_Drop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(typeof(MyDataItem)))
{
// 获取拖拽的数据项
var dataItem = (MyDataItem)e.Data.GetData(typeof(MyDataItem));
// 获取目标行
var targetRow = GetTargetRow(e.GetPosition(MyDataGrid));
// 在目标行后插入数据项
var index = MyDataGrid.Items.IndexOf(targetRow.DataContext);
MyDataGrid.Items.Insert(index + 1, dataItem);
}
}
private DataGridRow GetTargetRow(Point position)
{
// 根据鼠标位置获取目标行
var hitTestResult = VisualTreeHelper.HitTest(MyDataGrid, position);
if (hitTestResult != null)
{
var row = hitTestResult.VisualHit.FindAncestor<DataGridRow>();
if (row != null)
{
return row;
}
}
return null;
}
```
在这个示例代码中,`MyDataItem` 是数据项的类型,`MyDataGrid` 是 DataGrid 控件的名称,`GetTargetRow` 方法用于根据鼠标位置获取目标行。在 `Drop` 事件中,首先获取拖拽的数据项,然后获取目标行,并在目标行后插入数据项。
阅读全文