【发布时间】:2013-02-21 19:35:16
【问题描述】:
我的 WPF 应用程序检查剪贴板上的数据以查看它是否可以使用这些数据。因为我根据数据设置了一些按钮启用/禁用(通过ICommand实现),所以这段代码被频繁调用。
确定我的应用程序是否可以处理数据的工作有时并非易事,因此会导致我的应用程序随机“挂起”。我不相信我可以将这项工作推到另一个线程,因为 WPF 运行时期望快速响应。
为了解决这个问题,我想我会比较IDataObjects(剪贴板中的当前与上一次尝试中的缓存。直接比较(甚至object.ReferenceEquals不返回想要的结果,所以我想我会尝试Clipboard.IsCurrent的方法。描述听起来正是我想要的,但是当我评估以下内容时:
Clipboard.IsCurrent(Clipboard.GetDataObject())
结果是false。当前的解决方法是比较 IDataObject 上的数据格式,但这不是一个好的答案,因为我的应用程序可以处理文件系统中的一些文件,但不是全部。因此,即使格式相同,我的应用程序是否可以处理数据的结果也可能并不总是相同。
【问题讨论】:
标签: wpf c#-4.0 .net-4.0 clipboard