2013-06-18 48 views
2

我試圖禁用Windows Phone 8上的WebBrowser控件上的滾動和縮放而不使用任何HTML標籤。 我發現了一些關於此的文章,但它們都是針對Windows Phone 7的,而且我無法使代碼在WP8上工作。 什麼是下面的文章中描述我嘗試過,但它不能在WP8運行:禁用Windows Phone 8的滾動和縮放WebBrowser

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上。 有誰知道如何解決這個問題?

在此先感謝!

+0

你是否嘗試過這個帖子? [禁用縮放/平移/滾動爲web瀏覽器控件的功能] [1] [1]:http://stackoverflow.com/questions/11462611/disabling-the-zoom-pan-scroll - 功能爲網頁瀏覽器控制 –

+0

這是我發佈在我的問題中的鏈接完全相同的解決方案。它不適用於WP8,僅適用於WP7。控制結構改變了。 'Loaded'事件不起作用,'LayoutUpdated'給我一個例外,它找不到指定的'Border'。 –

+0

我在調查此問題時發現,我的WP8設備遵守您在http://www.scottlogic.com鏈接的問題聲明中描述的指令/blog/2011/11/17/suppressing-zoom-and-scroll-interactions-in-the-windows-phone-7-browser-control.html。 你最近試過嗎?您可能會在頁面中顯示某些內容,導致它無法正常工作。 –

回答

3

你有沒有試過這個CSS屬性?

-ms-touch-action: none; 
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; 
    } 
    } 
} 
0

可以IsHitTestVisible屬性設置爲False。