【发布时间】:2013-03-26 17:19:50
【问题描述】:
我在一个列表框中有多个 webbrowser 控件(层次结构:DataBoundListBox->Multiple ExpandableItems->每个可扩展项在展开时显示一个 webbrowser 控件。)。
问题是,webbrowser 控件捕获了拖动手势,一旦 webbrowser 控件展开,就无法滚动列表框。如果 webbrowser 的内容太长,用户会被卡住并且无法再滚动,因为 webbrowser 会填满整个屏幕。现在,网络浏览器只需要响应简单的点击事件(按钮)。
webbrowser 控件在内部捕获所有触摸手势和事件,但似乎有一个border 元素可以在触摸手势到达tilehost 之前拦截触摸事件并永远消失:
Border border = WebViewer.Descendants<Border>().Last() as Border;
为了捕捉触摸手势,我在边框上添加了一个 ManipulationDelta 事件,因为它不允许我添加像 DragStarted、DragDelta、DragCompleted 这样的 Gesture Listener 事件。
现在我需要将此 ManipulationDelta 事件数据获取到浏览器所在的列表框中的滚动查看器。
这是一种有效的概念方法吗?有人可以帮助我如何让它运行吗?
P.S.:我尝试了另一种方式(将点击手势事件从画布覆盖发送到 webbrowser 控制页面内的 javascript 并模拟页面上的点击)但这似乎并不像触摸坐标那样工作得很好并且 javascript 坐标有一个未知的偏移量。
感谢您的帮助!
【问题讨论】:
-
您可以将其发布为您自己问题的答案。
-
这样做了。我很惊讶它的工作原理,我希望它也能帮助其他人。
标签: c# silverlight windows-phone-8