簡體   English   中英

在 UWP 應用程序的同一網格內過濾 WebView 和其他 UI 元素之間的事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM