取消操作启动事件以防止拖放



有几个事件处理操纵(从而进行拖放):

  • 操纵启动
  • 操作已开始
  • 操纵增量
  • 操纵内部启动
  • 操作完成

在ManipulationStarting事件中,事件参数(类型ManipulationStartingRoutedEventArgs)允许我将Mode属性设置为ManipulationModes。无——这意味着不允许操纵,因此不允许拖动,这是正确的吗;滴

我这么问是因为我在玩官方XAML用户输入事件示例应用程序时遇到了一种奇怪的行为,尤其是在场景4(拖放)中。

只需将"模式"设置为"操纵模式"。Scenario4.xaml.cs:的ManipulationStarting事件中无

void ManipulateMe_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e)
{
forceManipulationsToEnd = false;
e.Mode = ManipulationModes.None;   // <-- this is new
e.Handled = true;
}

尽管如此,每隔三次拖动,我就可以拖动矩形。我录制了一段视频来演示这一点:http://www.youtube.com/watch?v=psytuTailHg.

这个问题不仅出现在这个示例中,而且出现在我自己的应用程序中。

问题:

  • 为什么会有这样奇怪的行为
  • 取消拖动的最佳方式是什么;drop事件(例如,如果不满足某些条件)

例如,在网格视图上,您可以实现DragItemStarting事件,并设置e.Cancel = true;以防止这种行为-这不符合您的需求吗?

最新更新