【发布时间】:2019-09-13 15:18:37
【问题描述】:
我有一个 UWP 应用(游戏)。整个 App 界面是一个 Win2D AnimatedCanvasControl,启用了拖放功能。
我编写了一个 DragOver 处理程序来抑制框架标题(“移动”/“复制”/等)和字形。
private void CnvGemSmash_DragOver (Object sender, DragEventArgs e)
{
e.AcceptedOperation = DataPackageOperation.None;
e.DragUIOverride.IsCaptionVisible = false;
e.DragUIOverride.IsGlyphVisible = false;
这有效 - 但直到拖动开始后大约 1 秒延迟后才有效。我已经搜索了 API 以寻找一种方法来避免字形出现在那几分之一秒 - 它在我的应用程序中看起来很糟糕。 有没有办法解决这个问题?
【问题讨论】:
-
此代码sample 可能会有所帮助。
-
请尝试将
e.AcceptedOperation修改为DataPackageOperation.Copy。 -
@NicoZhu 我查看了示例和 API 参考。我从他们那里得到的是,我无法抑制 DragStarting 上的字形,因为传递给该事件的 DragUI 版本不会公开字形。所以,我第一次删除字形的机会是 DragOver 或 DragEnter。这就是我所做的。 (更改 AcceptedOperation 只会给我一个不同的字形 - 不知道这会有什么帮助!?)。我可能理解为什么在触发第一个 DragOver/Enter 事件之前会有短暂的延迟,但鉴于此,API 似乎被破坏了,因为它不允许我管理字形。
-
是的,你是对的。原因是拖动启动时项目悬停区域不支持放置。这是设计使然。
-
@NicoZhu 感谢您的确认。我想我会做我自己的拖放实现。请将您的回复作为答案发布,以便我接受。这正是我问这个问题的原因。
标签: c# xaml uwp windows-10-universal