我有一个WPF Datagrid,我正在实现拖放功能 .
datagrid有一个"files"列表,用户可以拖动它们并将文件复制到桌面 .
这样做是这样的:
string[] files = new String[myDataGrid.SelectedItems.Count];
int ix = 0;
foreach (object nextSel in myDataGrid.SelectedItems)
{
files[ix] = ((Song)nextSel).FileLocation;
++ix;
}
string dataFormat = DataFormats.FileDrop;
DataObject dataObject = new DataObject(dataFormat, files);
DragDrop.DoDragDrop(this.myDataGrid, dataObject, DragDropEffects.Copy);
我有两个问题:
1.当我想拖动多个项目时 - 这是一个问题,因为在我选择一对并开始点击其中一个开始拖动之后 - 仅选择该项目并取消选择其他项目 . 我尝试了给出的解决方案here但由于某种原因它不起作用 .
2.我希望在复制后从数据网格中删除拖动的项目 . 问题是我不知道如何检查文件是否被复制,或者用户是否只是在屏幕上拖动它而不复制它 .
我希望你能帮助我解决这些问题 .
谢谢!
2 回答
我想这就是你要找的东西:
将此代码添加到DataGrid__PreviewMouseLeftButtonDown事件处理程序:
现在,拖延不会改变你的选择 .
祝你好运!
我用article来写我的答案
改进了查找行 . 还添加了在不拖动时选择单击的行 . 现在这与其他Microsoft选择器(例如Outlook)的行为完全相同