【发布时间】:2009-09-03 03:35:25
【问题描述】:
silverlight 中是否可以将文件从桌面拖放到浏览器中?我似乎记得在 Silverlight 3 中看到了一些关于它的功能。
【问题讨论】:
标签: silverlight silverlight-3.0
silverlight 中是否可以将文件从桌面拖放到浏览器中?我似乎记得在 Silverlight 3 中看到了一些关于它的功能。
【问题讨论】:
标签: silverlight silverlight-3.0
我最近对此进行了研究,根据以下线程中 Silverlight MVP 的帖子,Silverlight 3 不支持文件系统拖放。
http://betaforums.silverlight.net/forums/t/117317.aspx?PageIndex=1
Silverlight 4 现在似乎支持这一点:
http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/silverlight-controls-drop-targets/
【讨论】:
您可以在 silverlight 4 及更高版本的应用程序中从桌面拖放。在 silverlight 项目属性中选中“需要提升的权限”,并使用 silverlight datagrid 的 drop 事件,可以在 silverlight datagrid 中处理从桌面拖放。
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 对象。 我不确定这是否适用于 Silverlight 3 应用程序
【讨论】: