ctr*_*ron 7 c# windows-runtime win-universal-app windows-10 uwp
我编写了一个C#Windows Universal App,用户可以将文件复制到剪贴板中.但如果应用程序关闭,剪贴板内容就会丢失.如果用户可以如此轻松地丢失剪贴板内容,则可用性非常糟糕.有没有办法像任何其他经典的Windows应用程序一样使应用程序的剪贴板内容持久化?
示例代码:
public static void CopyFileToClipboard(StorageFile file) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
dp.SetStorageItems(new List<StorageFile>() { file });
Clipboard.SetContent(dp); // not available after app closed
Clipboard.Flush();
}
public static void CopyTextToClipboard(string text) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
dp.SetText(text); // available after app closed
Clipboard.SetContent(dp);
Clipboard.Flush();
}
//I have tried to copy the file to the app folder first but it has nothing changed.
public async static void CacheAndCopyFileToClipboard(StorageFile file) {
DataPackage dp = new DataPackage();
dp.RequestedOperation = DataPackageOperation.Copy;
var xfile = await ApplicationData.Current.LocalFolder.CreateFileAsync(file.Name);
await file.CopyAndReplaceAsync(xfile);
dp.SetStorageItems(new List<StorageFile>() { xfile });
Clipboard.SetContent(dp); // not available after app closed
Clipboard.Flush();
}
Run Code Online (Sandbox Code Playgroud)
所以问题是如何将文件放到剪贴板中,以便即使应用程序关闭,用户也可以粘贴它?
编辑:似乎这是所有Windows Universal Apps的问题,例如,如果您在Windows照片应用程序中复制图片,则只能在Photo App运行时粘贴它.我无法想象这种奇怪的行为应该是Apps的默认行为.它看起来更像是一个bug,因为我认为没有理由这种奇怪的行为.
Edit2:问题的新例子(感谢Joe300的反馈意见).它适用于字符串但不适用于StorageFile(即使它首先复制到本地app文件夹).Flush()命令不能与文件一起使用的原因是什么?我在使用文件(权限,......)时会考虑一些特别的事情吗?
您需要添加对 的调用,Flush以便在应用程序关闭后内容可用。
将内容添加到剪贴板并从源应用程序释放 DataPackage 对象。此方法允许内容在应用程序关闭后仍然可用。
您还应该设置RequestedOperation:
dp.RequestedOperation = DataPackageOperation.Copy;
try
{
Windows.ApplicationModel.DataTransfer.Clipboard.SetContent(dp);
Clipboard.Flush();
}
catch (Exception ex)
{
// Copying data to Clipboard can potentially fail - for example, if another application is holding Clipboard open
}
Run Code Online (Sandbox Code Playgroud)
除此之外,真的没有任何其他选项可以操作Clipboard.
| 归档时间: |
|
| 查看次数: |
1429 次 |
| 最近记录: |