使用MousePosition在DataGrid中获得一个Cell

时间:2014-01-13 08:54:55

标签: c# wpf mvvm datagrid

我为每个单元格都有一个带有VM的数据网格,我需要获取一个单元格(单元格中的VM),如果鼠标悬停在我的拖放问题上

有没有办法让VM在鼠标结束的地方?

读取here关于ContextMenuStrip

的内容

1 个答案:

答案 0 :(得分:2)

您可以在CellStyle中定义DataGrid来收听DragEnter事件:

<DataGrid.CellStyle>
    <Style TargetType={x:Type DataGridCell}>
        <EventSetter Event="DragEnter" Handler="OnDataGridCellDragEnter" />
    </Style>
</DataGrid.CellStyle>

然后您可以在代码中访问视图模型:

private void OnDataGridCellDragEnter(object sender, DragEventArgs e)
{
    var viewModel = ((FrameworkElement)sender).DataContext;
}

注意,只有在您使用DragEnter启动拖放操作时才会触发DragDrop.DoDragDrop事件。要执行上述正常鼠标移动,您可以收听MouseOver而不是DragEnter