Windows Phone 7 如何禁用WebBrowser 控制元件縮放和左右移動
我認為有兩種方法可以實現。
1, WebBrowser 是基於IE 9的,所以WebBrowser 也是支援最新的HTML5標準。然而在HTML中有許多控制元件是通過Browser的 pan 和zoom等手持行為起作用的,您可以設定HTML中的 viewport metadata 元素來實現。如:將下面的HTML程式碼加入到您的HTML檔案頭上。
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;。
例如:
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;
}
}
}
本文來自Stephen Ding的部落格,原文地址:http://www.cnblogs.com/Stephending/archive/2012/02/16/WP7_Silverlight_WebBroswer.html
相關文章
- WP7 如何禁用WebBrowser 控制元件縮放和左右移動Web控制元件
- Windows Phone 7 開發 31 日談——第18日:WebBrowser控制元件WindowsWeb控制元件
- UWPWebView禁用縮放WebView
- Windows Phone 中WebBrowser開啟新視窗WindowsWeb
- Win10系統如何禁用Windows Phone-PC連結Win10Windows
- Windows Phone 7 墓碑機制Windows
- Windows Phone 7程式設計Windows程式設計
- Windows Phone 部分控制元件的應用Windows控制元件
- Windows Phone 7 開發 31 日談——第20日:地圖控制元件Windows地圖控制元件
- Windows Phone 7 開發 31 日談——第17日:樞軸控制元件Windows控制元件
- Windows Phone 7 開發 31 日談——第7日:啟動器Windows
- HTML Agility Pack for Windows Phone 7 (WP7)HTMLWindows
- Windows Phone 7解析圖片格式Windows
- Windows 8下如何禁用啟動項Windows
- Flutter 自定義縮放控制元件Flutter控制元件
- Windows Phone 7 不溫不火學習之《建立使用者控制元件》Windows控制元件
- WebBrowser 控制元件-說明Web控制元件
- Windows7自動更新重啟提示禁用方法Windows
- 如何縮放SVGSVG
- 控制 WebBrowser 控制元件的外觀和行為Web控制元件
- Windows Phone 7中帶題頭的TextBox和PasswordBoxWindows
- 《Windows Phone 7入門經典之使用Silverlight和XNA開發Windows Phone應用》書評Windows
- 一起學Windows Phone7開發(十四.一 Phone Task)Windows
- 教你如何進行Prometheus 分片自動縮放Prometheus
- Windows Phone 7 開發 31 日談——第21日:Silverlight Toolkit for Windows PhoneWindows
- Windows Phone 7 點陣圖程式設計Windows程式設計
- Windows Phone 7 SIM卡資訊獲取Windows
- windows7互動式服務檢測怎麼禁用Windows
- windows10如何禁用onedrive_windows10怎樣禁用onedriveWindows
- 如何關閉移動web頁面縮放功能Web
- Windows Phone7開發系列視訊地址Windows
- Windows Phone7 實現檔案上傳Windows
- 深入理解Windows Phone 8.1 UI控制元件程式設計WindowsUI控制元件程式設計
- 禁用windows 10自動更新Windows
- 一個IT愛好者眼中的Windows Phone和Android PhoneWindowsAndroid
- WPF和js互動 WebBrowser資料互動JSWeb
- Windows Phone 7 開發 31 日談——第12日:使手機震動Windows
- Windows Phone FAQWindows