【发布时间】:2016-10-12 17:16:26
【问题描述】:
我在我的 WPF 应用程序中使用 <WebBrowser> 的 WinForms 版本,a la <WindowsFormsHost> 因为总的来说它比 Windows.Controls 版本好得多。但是我有一个与触摸屏有关的问题。
通常我在控件上设置ManipulationBoundaryFeedback 事件处理程序以立即处理事件,从而防止任何边界反馈,我尝试使用以下代码来做到这一点:
MainWindow.xaml
<WindowsFormsHost IsManipulationEnabled="True" ManipulationBoundaryFeedback="WindowsFormsHost_OnManipulationBoundaryFeedback">
<forms:WebBrowser />
</WindowsFormsHost>
MainWindow.xaml.cs
private void WindowsFormsHost_OnManipulationBoundaryFeedback(object sender, ManipulationBoundaryFeedbackEventArgs e)
{
e.Handled = true;
}
在普通的 WPF 控件上,一般来说,这是可行的。而我所说的“作品”是指如果你用手指在触摸屏上向上或向下拖动,你不会得到触摸屏的效果intertia;也就是说,一旦您到达边界,它不会向上或向下移动 整个窗口。
这里有一张图片来说明正在发生的事情:
如您所见,如果我在浏览器中向下拖动,它会拉动整个窗口。我能做些什么来防止这种情况发生?
【问题讨论】:
-
你试过用
OnManipulationBoundaryFeedback代替吗? -
@Night5h4d3 你的评论有错别字吗?因为这就是我使用的字面意思。
-
对不起;您是否尝试将事件处理程序添加到 Web 浏览器标签?
-
该控件的 Windows 窗体版本没有 ManipulationBoundaryFeedback 事件;操作事件是 WPF 的一部分(WinForms 早于它)
-
在这种情况下,您需要为WM_Gesture message 编写特殊处理。 this 和 this 可能会有所帮助。