将pdf文件拖放到Silverlight

时间:2015-04-08 11:27:12

标签: c# silverlight

我用这样的drop handler创建了ListBox:

<ListBox x:Name="lbFile" AllowDrop="True" Drop="DropHere" />

但是当我尝试将文件从桌面移动到Silverlight时,drop事件永远不会发生,因为Web浏览器(Internet Explorer,Mozilla等)在Silverlight中打开了pdf文件。

问题是,如何处理从计算机到Silverlight的拖放文件或如何防止在Web浏览器中打开文件。

我在下面的版画屏幕上介绍了这种情况:

http://i.stack.imgur.com/y9ZzW.png

1 个答案:

答案 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。