我用这样的drop handler创建了ListBox:
<ListBox x:Name="lbFile" AllowDrop="True" Drop="DropHere" />
但是当我尝试将文件从桌面移动到Silverlight时,drop事件永远不会发生,因为Web浏览器(Internet Explorer,Mozilla等)在Silverlight中打开了pdf文件。
问题是,如何处理从计算机到Silverlight的拖放文件或如何防止在Web浏览器中打开文件。
我在下面的版画屏幕上介绍了这种情况:
答案 0 :(得分:1)
您可以在Silverlight应用程序中从桌面拖放。检查&#34;要求提升权限&#34;在silverlight项目属性和使用silverlight datagrid的drop事件中,可以在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中为datagrid。从DragEventArgs中提取信息为FileInfo Object。