WP7 如何禁用WebBrowser 控件缩放和左右移动
2012-04-26 15:47
344 查看
我认为有两种方法可以实现。 1, WebBrowser 是基于IE 9的,所以WebBrowser 也是支持最新的HTML5标准。然而在HTML中有许多控件是通过Browser的 pan 和zoom等手持行为起作用的,您可以设置HTML中的 viewport metadata 元素来实现。如:将下面的HTML代码加入到您的HTML文件头上。 <meta name="viewport" content="user-scalable=no" /> 2, WebBroswer控件的组成是一棵树型结构如下图: \-WebBrowser \-Border \-Border \-PanZoomContainer \-Grid \-Border (*) \-ContentPresenter \-TileHost 其中 TileHost 就是原始的IE9组件,TileHost 不处理所有的manipulation相关的事件,而是由PanZoomContainer来处理,将这些事件转换成手持,然后将结果传输到TileHost。 换句话说我们可以中断相关的manipulationg事件传输到PanZoomContainer。当这些事件还未bubble up到PanZoomContainer时,当这些事件设置为已经处理过。 这个方法的关键步骤有2步: 1, 需要从WebBroswer组件树中找到Border控件。请参考:http://www.scottlogic.co.uk/blog/colin/2010/03/linq-to-visual-tree/ 2, 处理manipulation相关的事件,并设置该事件已经处理过 e.Handled = true;。 例如: using LinqToVisualTree; public class WebBrowserHelper { public WebBrowser _browser; /// <summary> /// Gets or sets whether to suppress the scrolling of /// the WebBrowser control; /// </summary> public bool ScrollDisabled { get; set; } public WebBrowserHelper(WebBrowser browser) { _browser = browser; browser.Loaded += new RoutedEventHandler(browser_Loaded); } private void browser_Loaded(object sender, RoutedEventArgs e) { var border = _browser.Descendants<Border>().Last() as Border; border.ManipulationDelta += Border_ManipulationDelta; border.ManipulationCompleted += Border_ManipulationCompleted; } private void Border_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e) { // suppress zoom if (e.FinalVelocities.ExpansionVelocity.X != 0.0 || e.FinalVelocities.ExpansionVelocity.Y != 0.0) e.Handled = true; } private void Border_ManipulationDelta(object sender, ManipulationDeltaEventArgs e) { // suppress zoom if (e.DeltaManipulation.Scale.X != 0.0 || e.DeltaManipulation.Scale.Y != 0.0) e.Handled = true; // optionally suppress scrolling if (ScrollDisabled) { if (e.DeltaManipulation.Translation.X != 0.0 || e.DeltaManipulation.Translation.Y != 0.0) e.Handled = true; } } } |
相关文章推荐
- WP7 如何禁用WebBrowser 控件缩放和左右移动
- WP7 如何禁用WebBrowser 控件缩放和左右移动
- WP7 如何禁用WebBrowser 控件缩放和左右移动
- Windows Phone 7: 如何禁用 WebBrowser 控件缩放和左右移动
- Windows Phone 7 如何禁用WebBrowser 控件缩放和左右移动
- wpf 如何让控件左右移动
- [置顶] viewPager+photoView实现图片轮播和手势缩放功能 支持手势缩放的imageView 如何实现相册左右滑动和手势缩放 如何让图片自适应控件大小 photoView如何使用(上)
- Webbrowser控件 怎么样禁用ActiveX
- 如何确定WebBrowser 控件中的页面加载完成
- webbrowser控件之如何保证网页正常加载
- C#用TabControl控件如何使某个TabPage禁用
- Android 控件的显示隐藏上下左右移动动画
- WebBrowser控件禁用超链转向、脚本错误提示、默认右键菜单等
- [转载]C#如何在webBrowser1控件通过TagName,Name查找元素(没有ID时)遍历窗体元素
- 如何使用 WebBrowser 控件在 Visual C# 2005 或 Visual C# .NET 中打开 Office 文档
- [Phonegap+Sencha Touch] 移动开发73 可以左右滑动切换的日历控件(带农历)
- cxSplitter禁用移动和拖拽,只允许点击箭头按钮触发缩放(展开和收起)
- jquery 两个select控件左右移动并上下移动
- Android 控件的显示隐藏上下左右移动动画
- Webbrowser如何设置iframe里控件的值