我已按照此处找到的示例进行操作。它实现 IDataObject 接口以创建“虚拟文件”数据对象。当将虚拟文件从 WPF 应用程序 d/d 到文件系统和 Outlook 电子邮件(文件附加到电子邮件)时,该实现工作得很好。我最近更新到 Outlook 365,但它突然停止工作,调试代码显示该过程实际上执行了下载文件的功能,但这些文件从未在电子邮件中显示为附件。
有人知道365中从Outlook处理d / d的方式是否改变了吗?请,任何提示。
VirtualFileDataObject 类的代码可以在这里找到
这是使用检索虚拟文件的函数设置 FileDescriptor 列表的代码:
VirtualFileDataObject.FileDescriptor[] files = new VirtualFileDataObject.FileDescriptor[myItems.Count];
for (int i = 0; i < myItems.Count; i++)
{
var name = myItems[i].ItemName;
files.SetValue(
new VirtualFileDataObject.FileDescriptor
{
Name = name,
StreamContents = stream =>
{
try
{
using (var webClient = new WebClient())
{
var data = webClient.DownloadData(myItems[i].Url);
stream.Write(data, 0, data.Length);
}
}
catch (Exception ex)
{
MessageBox.Show($"File '{name}' could not be copied.\n{ex.Message}", "Drag and Drop", MessageBoxButton.OK, MessageBoxImage.Error);
}
}
}, i);
}
virtualFileDataObject.SetData(files);