从桌面拖放到 c1datgrid

drag drop in c1datgrid from desktop

我在 silverlight 5 中有一个应用程序。我在我们的应用程序中使用 c1datagrid。我想将项目从桌面拖放到我们的 c1datagrid 行,同时我想突出显示我正在拖放的特定行。

您不能执行从桌面到 silverlight 应用程序的拖放操作。这是技术限制。

可以在 silverlight 应用程序中拖放。检查 silverlight 项目属性中的 "Require Elevated permissions" 并使用 silverlight datagrid 的放置事件可以处理从桌面到 silverlight datagrid 的拖放,前提是它不是 OOB silverlight 应用程序。

private void DocumentsDrop(object sender, DragEventArgs e)
{
e.Handled = true;

var point = e.GetPosition(null);
var dataGridRow = ExtractDataGridRow(point);
if(dataGridRow !=null)
{.....
 }

var droppedItems = e.Data.GetData(DataFormats.FileDrop) as      FileInfo[];
if (droppedItems != null)
     {
        var droppedDocumentsList = new List<FileInfo>();

        foreach (var droppedItem in droppedItems)
        {
            if ((droppedItem.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
            {
                var directory = new DirectoryInfo(droppedItem.FullName);
                droppedDocumentsList.AddRange(directory.EnumerateFiles("*", SearchOption.AllDirectories));
            }
            else
            {
                droppedDocumentsList.Add(droppedItem);
            }
        }

        if (droppedDocumentsList.Any())
        {
            ProcessFiles(droppedDocumentsList);
        }
        else
        {
            DisplayErrorMessage("The selected folder is empty.");
        }
    }
 }      

设置AllowDrop =true;在 xaml 中用于数据网格。从 DragEventArgs 中提取信息作为 FileInfo 对象。