WP7 如何禁用WebBrowser 控制元件縮放和左右移動
我認為有兩種方法可以實現。
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;
}
}
}
相關文章
- Windows Phone 7 如何禁用WebBrowser 控制元件縮放和左右移動WindowsWeb控制元件
- UWPWebView禁用縮放WebView
- Flutter 自定義縮放控制元件Flutter控制元件
- WebBrowser 控制元件-說明Web控制元件
- 如何縮放SVGSVG
- 控制 WebBrowser 控制元件的外觀和行為Web控制元件
- 教你如何進行Prometheus 分片自動縮放Prometheus
- 如何關閉移動web頁面縮放功能Web
- WPF和js互動 WebBrowser資料互動JSWeb
- 解決方案 | IrfanView如何滑動滾輪影像縮放?View
- 遮蔽WebBrowser2控制元件聲音Web控制元件
- WebBrowser 控制元件設計模式設定Web控制元件設計模式
- CAD如何使用縮放命令
- webbrowser控制元件使用時的注意事項Web控制元件
- win32 sdk下呼叫webbrowser控制元件Win32Web控制元件
- pc滑鼠左右移動
- 使用RxJava實現ImageView的拖動、旋轉和縮放RxJavaView
- [譯] 如何禁用連結:從入門到放棄
- 縮放比
- css img 等比例自動縮放CSS
- 網站狀態驗證WebBrowser控制元件實現網站Web控制元件
- react專案中實現元素的拖動和縮放例項React
- 用WebBrowser實現HTML介面的應用和互動WebHTML
- 讓普通控制元件擁有左鍵移動窗體的功能控制元件
- Web移動端 自適應縮放介面Web
- Android動態UI適配(等比縮放)AndroidUI
- 如何檢測頁面是否進行了縮放
- 使用WebBrowser控制元件獲取網頁原始碼的方法Web控制元件網頁原始碼
- ZoomIt 螢幕縮放和批註工具OOMMIT
- Java的左移和右移運算子Java
- Windows 8下如何禁用啟動項Windows
- Android 呼叫相簿 拍照 實現系統控制元件縮放 切割圖片Android控制元件
- Linux如何手動釋放Swap、Buffer和CacheLinux
- 如何使用 GParted 實用工具縮放根分割槽
- Laravel-admin 禁止重新整理後左選單自動收縮Laravel
- C++影象縮放C++
- WebBrowser頁面與WinForm互動技巧WebORM
- 如何讓圖片按比例響應式縮放、並自動裁剪的css技巧CSS