[英]Filtering events between WebView and other UI Elements inside the same grid of a UWP application
我正在嘗試構建一個基於 UWP 的 WebView 應用程序,並且我有這個基本設計:
<Page>
<Grid>
<WebView Name="_webhost" DragEnter="_webhost_OnDragEnter"/>
<StackPanel AllowDrop="True" Drop="_webhost_OnDrop" DragOver="UIElement_OnDragOver" Background="Transparent" PointerEntered="UIElement_OnPointerEntered"/>
</Grid>
</Page>
因此StackPanel位於Webview 之上,它們都填滿了整個屏幕,而StackPanel默認情況下實際上是透明的。
當我在StackPanel中設置IsHitTestVisible=false
時,所有與鼠標相關的輸入事件都會在WebView的內容中觸發 - 但問題是,我希望在 StackPanel 中觸發一些(特定)事件。 當不在StackPanel中設置該屬性時,它會捕獲所有輸入事件,因此它們都不會傳播到WebView中。
請注意,為WebView設置事件處理程序通常不會做任何事情 - 因為官方文檔說state 它不支持從 UIElement 繼承的大多數用戶輸入事件。
所以底線 - 我希望在StackPanel中觸發特定事件,但在其他元素( WebView或至少其內容)中觸發所有其他事件。 如何做到這一點?
一般情況下,輸入事件會從子元素冒泡到父元素,底層同級控件不會持有該事件。 我測試了您的代碼 WebView DragEnter
永遠不會觸發,直到為StackPanel
設置IsHitTestVisible=false
。
我希望在 StackPanel 中觸發特定事件
如果你想為StackPanel
指定事件,你可以添加e.Handled = true;
在事件處理程序中。 但它僅適用於從子元素冒泡到父元素的事件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.