windows-phone-8 – 在WP8上实现Swipe事件
我正在创建一个wp8应用程序,用于在浏览器中显示一些html文件,结构是
<Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Grid Name="PageNavigationMenu"> <Grid.ColumnDefinitions> <ColumnDefinition Width="Auto"/> <ColumnDefinition Width="Auto"/> </Grid.ColumnDefinitions> <Button Height="70" Content="P" Grid.Column="0" VerticalContentAlignment="Center" Click="btnPrevious_Click" x:Name="btnPrevious" ></Button> <Button Height="70" Content="N" Grid.Column="1" VerticalAlignment="Center" Click="btnNext_Click" x:Name="btnNext"></Button> </Grid> <Grid Grid.Row="1" Hold="Grid_Hold"> <phone:WebBrowser IsScriptEnabled="True" x:Name="mainBrowserControl"> </phone:WebBrowser> </Grid> </Grid> 现在我使用上一个按钮和下一个按钮来更改浏览器中的内容.我想在浏览器上使用向左滑动/向右滑动来执行此操作.如果用户向左滑动方向,则应使用上一页加载borswer内容,然后向右滑动结果以加载下一页. 那么我必须听取哪些事件来实现滑动功能 解决方法
有两种可能性(AFAIK):
你可以使用XNA TouchPanel(有关它的更多信息,你可以在这里找到: Working with TouchInput,Detecting Gestures和这个 blog): public MainPage() { InitializeComponent(); TouchPanel.EnabledGestures = GestureType.Flick; myWebbrowser.ManipulationCompleted += myWebbrowser_ManipulationCompleted; } private void myWebbrowser_ManipulationCompleted(object sender,System.Windows.Input.ManipulationCompletedEventArgs e) { if (TouchPanel.IsGestureAvailable) { GestureSample gesture = TouchPanel.ReadGesture(); switch (gesture.GestureType) { case GestureType.Flick: if (e.FinalVelocities.LinearVelocity.X < 0) LoadNextPage(); if (e.FinalVelocities.LinearVelocity.X > 0) LoadPreviousPage(); break; default: break; } } } 或者您可以使用this answer或other here中所述的Silverlight Toolkit. FrameworkDispatcher.Update(); 否则你的应用程序有时会崩溃. 希望这可以帮助. public MainPage() { InitializeComponent(); TouchPanel.EnabledGestures = GestureType.Flick; Touch.FrameReported += Touch_FrameReported; } private void Touch_FrameReported(object sender,TouchFrameEventArgs e) { if (TouchPanel.IsGestureAvailable) { GestureSample gesture = TouchPanel.ReadGesture(); switch (gesture.GestureType) { case GestureType.Flick: if (gesture.Delta.X > 0) MessageBox.Show("Right"); if (gesture.Delta.X < 0) MessageBox.Show("Left"); break; default: break; } } } 下一个编辑(在下一个评论之后) – 更好的实现和禁用向上,向下手势的示例: 如果你不想激活(向左)/向下(向右),你必须自己描述条件.请注意,用户只会向左/向右/向上/向下移动手指的可能性很小(如果有的话) – 因此您必须包含一些余量.有很多解决方案,你必须尝试使用??它,最简单的解决方案只是比较deltaX和deltaY的手势: public MainPage() { InitializeComponent(); TouchPanel.EnabledGestures = GestureType.Flick | GestureType.HorizontalDrag; Touch.FrameReported += Touch_FrameReported; } TouchPoint firstPoint; private void Touch_FrameReported(object sender,TouchFrameEventArgs e) { TouchPoint mainTouch = e.GetPrimaryTouchPoint(ContentPanel); if (mainTouch.Action == TouchAction.Down) firstPoint = mainTouch; else if (mainTouch.Action == TouchAction.Up && TouchPanel.IsGestureAvailable) { double deltaX = mainTouch.Position.X - firstPoint.Position.X; double deltaY = mainTouch.Position.Y - firstPoint.Position.Y; if (Math.Abs(deltaX) > 2 * Math.Abs(deltaY)) { if (deltaX < 0) MessageBox.Show("Right."); if (deltaX > 0) MessageBox.Show("Left."); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用哪种媒体来安装Windows 7
- win10下maven3.6.1配置本地仓库及远程国内镜像仓库
- 如何在Windows Server Active Directory计算机下列出Linux计
- 在Windows上使用Qt Creator的控制台应用程序:在关闭控制台
- Windows程序集堆和堆栈?
- windows-server-2012 – RDP适用于有线连接,但它在“估计连
- 无法在Windows上打开使用Cygwin修改的文件,在ls -l输出中提
- windows – 如何在运行.bat文件时隐藏ms-dos窗口?
- windows – 命令行 – 仅在使用for命令循环时如何提取文件名
- 如何让编译日志在Emacs中创建一个新窗口?
- windows – 存在多个网络连接时的“主要”DNS
- 如何在Windows上获取视频捕获设备(网络摄像头)列
- windows-server-2008-r2 – 慢速写入Dell Server
- 单点登录 – 为什么ADFS不通过集成Windows身份验
- active-directory – 如何手动恢复Windows 2000域
- windows – 有没有办法在使用堆栈构建时在powers
- windows挂载nfs
- 在没有用户交互的情况下为Windows安装python
- windows phone 7 – Windows Phone 7(WP7)PhotoC
- windows-8 – Windows 8应用程序:为什么我必须在