2009-09-03 88 views

回答

3

我看着这个最近,基于从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/

+0

Bah,我浪费了整个骑自行车的家计划一个很酷的应用程序。谢谢 – stimms

+0

Silverlight 4中现在提供了此功能:http://www.silverlight.net/learn/videos/silverlight-4-beta-videos/silverlight-controls-drop-targets/ –

0

您可以将桌面从在Silverlight 4和上述申请下降。选中silverlight项目属性中的“Require Elevated permissions”,并使用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."); 
     } 
    } 
} 

Set AllowDrop = true;在数据网格的xaml中。从DragEventArgs中提取信息作为FileInfo对象。 我不知道这与Silverlight 3应用程序的工作