【问题标题】:Touch events not working after DoDragDropDoDragDrop 后触摸事件不起作用
【发布时间】:2014-01-17 05:27:08
【问题描述】:

我正在开发一个支持基本触摸事件(非操作)的 WPF 应用程序。我正在使用 Gong DragDrop 来处理拖放操作。我遇到的问题描述如下:

在[Preview] Drop事件(使用Gong DragDrop)中,我显示一个对话框并提示用户确认放置位置,用户必须单击“是”按钮才能完成放置或“否”按钮取消放置。我可以用鼠标点击这两个按钮,但触摸事件没有运气。

我使用 spy++ 来监视提示对话框的鼠标事件,该对话框派生自一个窗口。鼠标事件和触摸事件都被记录下来。

为什么鼠标事件有效而触摸无效?有没有办法联系工作?

【问题讨论】:

  • 触摸不起作用或拖放后触摸不起作用?
  • 触摸在通过拖放创建的对话框中不起作用。一旦对话框关闭(使用鼠标),触摸工作正常。谢谢。
  • 对不起,我应该详细说明一下。我正在使用与 MVVM 模式兼容的 Gong DragDrop v.0.1.3.11。至于 MVVM 模式,我使用的是 MVVMLight。在 drop 事件期间, gong 拖放库从 viewmodel 调用一个方法(通过接口和其他东西)。 Gong 拖放调用的方法包含将向 GUI 控制器发送消息(使用 Messenger)以生成提示用户确认放置位置的对话框的代码。不知何故,该对话框上的按钮对触摸没有响应,但这些按钮可以工作。鼠标点击。再次感谢。
  • 所以顺序是这样的:Gong 拖放事件中的 Drop 事件调用 ViewModel 中的方法 ---> ViewModel 向 GUI 控制器发送消息 ---> Gui 控制器创建一个对话框。在对话框控件中,鼠标有效,触摸无效。希望这有点道理。 :)
  • 也面临类似的问题,在 DragDrop 之后,当前屏幕上所有可用的按钮都没有检测到触摸事件,我必须做一个小平移(触摸和移动)并且按钮现在检测到触摸事件。似乎执行 DragDrop 的控件在某些预览事件上侦听时间过长,不允许冒泡到触摸事件:/

标签: wpf mvvm drag-and-drop


【解决方案1】:

显然这是 WPF 中的一个错误。 Microsoft 已决定忽略它并删除了此处的错误报告: https://connect.microsoft.com/VisualStudio/feedback/details/619521/wpf-touch-bug 引用 Connect 用于未来版本,而不是用于修复错误 source

This MSDN Forum thread 详细介绍了一些可怜的虫子试图在这个问题上与微软打交道。请注意,使用 Visual Studio 2013 升级到 .Net 4.5.1 并不能解决问题。

但他确实找到了一种解决方法,即在新线程上打开对话框。

Application.Current.Dispatcher.BeginInvoke(DispatcherPriority.Send, new Action(delegate
{
    var window = new MyWindowView
    {
        IsManipulationEnabled = true,
        Owner = Application.Current.MainWindow,
        Topmost = true
    };
    WindowInteropHelper helper = new WindowInteropHelper(window);
    helper.Owner = helper.Handle;
    window.ShowDialog();
}));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-06
    • 2012-06-17
    • 2020-09-04
    • 1970-01-01
    相关资源
    最近更新 更多