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