基于鼠标位置的DataGrid行上的AllowDrop

时间:2014-09-26 15:21:15

标签: c# silverlight

我想知道,如果我可以在AllowDrop行使用datagrid,而不是DataGrid本身。

我将解释:

我可以在allowDropdatagrid,然后,我尝试确定该行,我放弃了我的项目。

问题是,它在我放下项目之前保持选择行。因为当我在datagrid的某一行上拖动某个项目时,它不会执行select事件。

那么,有没有办法,或者将AllowDrop放在一行上,这样我就可以更轻松地识别它,或者无论哪种方式,用鼠标的位置识别好行,当我放下项目

编辑:所以,在将AllowDrop放在一行后,这仍然无效。问题是,当我在其上放置一个项目时,能够选择Row。这可能吗?

我可以根据鼠标位置(或放置项位置)获取Selected行吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

为DataGrid.LoadingRow事件的DataGrid添加处理程序:

  • DataGrid_LoadingRow事件将传递给DataGridRowEventArgs。
  • DataGridRowEventArgs包含正在加载的行。

示例:

    private void MyDataGrid_LoadingRow(object sender, DataGridRowEventArgs e)
    {
        e.Row.AllowDrop = true;
    }

答案 1 :(得分:0)

如何获取鼠标下的行:

    private void DataGrid_OnDrop(object sender, DragEventArgs e)
    {
        DataGridRow dataGridRow = null;

        var point = e.GetPosition(null);
        var elements = VisualTreeHelper.FindElementsInHostCoordinates(point, theDataGrid);
        if (elements != null && elements.Count() > 0)
        {
            var rowQuery = from gridRow in elements where gridRow is DataGridRow select gridRow as DataGridRow;
            dataGridRow = rowQuery.FirstOrDefault();
        }
    }