禁用滚动&放大Windows Phone 8 WebBrowser

时间:2013-06-18 07:05:48

标签: scroll windows-phone-8 zoom webbrowser-control

我正在尝试禁用Windows Phone 8上的WebBrowser控件的滚动和缩放,而不使用任何HTML标记。 我发现了一些关于此的文章,但它们都是针对Windows Phone 7的,我不能让代码在WP8上运行。 我已经尝试过以下文章中描述的内容,但它不适用于WP8:

http://www.scottlogic.co.uk/blog/colin/2011/11/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control/

我也尝试过设置ScrollViewer.VerticalScrollBarVisibility="Disabled"ScrollViewer.HorizontalScrollBarVisibility="Disabled",但我仍然可以滚动和缩放。

我不知道该怎么做,我开始认为在WP8上不可能。 有谁知道如何解决这个问题?

提前致谢!

3 个答案:

答案 0 :(得分:3)

你试过这个CSS属性吗?

-ms-touch-action: none;

答案 1 :(得分:0)

您可以使用WebBrowserHelper类来实现此

创建WebBrowserHelper类的实例

public Header()
{
InitializeComponent();
new WebBrowserHelper(wbHeaderBrowser, strHeaderUri);
new WebBrowserHelper(wbFooterBrowser, strFooterUri);
}

WebBrowserHelper.cs

using System.Linq;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Input;
using LinqToVisualTree;
using Microsoft.Phone.Controls;

/// <summary>
/// Suppresses pinch zoom and optionally scrolling of the WebBrowser control
/// </summary>
public class WebBrowserHelper
{
  private 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 ||(ScrollDisabled && e.IsInertial))
  }

  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;
    }
  }
}

答案 2 :(得分:0)

您可以将IsHitTestVisible属性设置为False。