我想延長Skeet已經寫好的東西。
問題是,MS WP7開發團隊已經發布了「指導方針」,他們高度不鼓勵在同一頁面放置多個佈局控件,以接受和響應同一組手勢。例如,您不應該嘗試在Pano中嵌入Pivot,因爲橫向輕掃會發生衝突,並且很難區分哪些應該執行其操作。同樣的情況是瀏覽器:它響應所有的滑動和平底鍋......所以不應該放在幾乎任何滾動控制!
說了這麼多,我想告訴你可以克服它 - 雖然它可能會變得不容易,這取決於你的實際情況。
如果你仍然需要通知手勢,最簡單的事情就是使用Silverlight Toolkit庫中的GestureService/GestureListener。即使WebBrowser將原始操作事件熄滅,GestureListener仍然能夠通知您 - 因爲它顯然在某個「其他層」上偵聽,我現在並不完全想要接受它。剛取庫,添加引用它,這樣做:
GestureService.GetListener(targetcontrol).Flick(myBrowserFlickHandler);
它完成 - 你得到通知時被e.handled上控制別人的筆觸,具有完全沒有操縱事件的有關= TRUE或不。這裏的小聲明:我不記得是否在7.0上有效,因爲WebBrowser在那裏有點不同。在7.1和7.5上它應該可以工作。
但是,如果你在WebBrowser上應用它 - 你將得到notif - 但webbrowser也會得到它。這意味着,2個控制器會作出反應,並且如果從處理程序內啓動一些故事板,它會變得視覺上相當不友好。
在7.1和幾乎當前的7.5上,可以使用WebBrowser和完全控制它將看到的操作事件。因此,通過過濾WB的mani事件,並通過使用GestureListener自己查看事件,您既可以阻止WB執行任何操作,也可以用自己的操作進行響應。我已經針對類似問題廣泛地撰寫了這篇文章,詳情請參閱WP7 Pivot control and a WebBrowser control。儘管如此,這不是一個快速/簡單/有趣的事情。
編輯:和MOST重要的是,它不能保證在未來到工作。在整個7.1和7.5 SDK/OS/API版本中,在WebBrowser控件內部,一些主要的內部正在進行的更改是可見的,如果它在接下來的幾個版本中發生顯着變化,我不會感到驚訝。如果你不想在未來的1 - 2年內再次重新討論這個問題,不要去玩那些我在那裏寫過的東西。
咕嘟咕嘟閱讀,確認。我放棄了WebBrowser後面的一個列表框。通過任何明顯的手段無法讓滾動事件進入列表框。 – 2010-07-18 10:39:29