c# - 在 UWP 应用程序的同一网格内过滤 WebView 和其他 UI 元素之间的事件
问题描述
我正在尝试构建一个基于 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默认情况下实际上是透明的。
当我IsHitTestVisible=false
在StackPanel中设置时,所有与鼠标相关的输入事件都会在WebView的内容中触发 - 但问题是,我希望在 StackPanel 中触发一些(特定)事件。当不在StackPanel中设置该属性时,它会捕获所有输入事件,因此它们都不会传播到WebView中。
请注意,为WebView设置事件处理程序通常不会做任何事情 - 因为官方文档说它不支持从 UIElement 继承的大多数用户输入事件。
所以底线 - 我希望在StackPanel中触发特定事件,但在其他元素(WebView或至少其内容)中触发所有其他事件。如何做到这一点?
解决方案
一般情况下,输入事件会从子元素冒泡到父元素,底层同级控件不会持有该事件。我测试了你的代码,WebViewDragEnter
在设置IsHitTestVisible=false
为StackPanel
.
我希望在 StackPanel 中触发特定事件
如果您想要特定的事件StackPanel
,您可以添加 e.Handled = true;
事件处理程序。但它仅适用于从子元素冒泡到父元素的事件
推荐阅读
- django - Need to get user lists along Average in django while data in separate table
- java - 当我在 Windows cmd 中按下 BackSpace 按钮时,Jshell 崩溃
- java - 我想要通用类的“类
" 与 "类变量" - c# - 无法从 WPF 中的 app.xaml 覆盖按钮样式
- amazon-web-services - Can I use SNS subscription with internal ALB endpoint within the VPC?
- java - Edit and save other jar while running
- java - How to manage Java Spring applications autoscaling in Kubernetes PROPERLY?
- c# - Nuget packages are not updated even running Update-Package -reinstall
- mysql - 如何检索连续几天发生某些事件的不同行数
- aws-cli - 如何通过 cli 或 sdk 设置 Cognito 用户池应用程序客户端的允许自定义范围?