我在 Button
上有一个 Grid
(它们都直接位于另一个网格上,但 Grid
位于“上方”)。我需要订阅Grid
中的某些事件,但仍然能够单击Button
。我将 Grid
的 Background
设置为 Transparent
,以使其引发事件,但是 Button
不显示不可点击。有没有办法保留 IsHitTestVisible = true
但同时让点击转到下一个元素?
最佳答案
我首先看看是否可以将按钮放在网格上方。您只需在 XAML 中移动它即可 - 元素声明在 XAML 中越靠下,z 顺序就越高。
如果您确实无法执行此操作,则可以重写 UI 元素的 MouseUp 或 MouseDown 方法并控制 Handling 属性的设置,以允许树中的后续元素接受单击。
如果您只想将其限制为特定控件,则可以检查“OriginalSource”属性(因为所有这些事件参数都继承自 RoutedEventArgs)以查看点击的来源是什么并采取相应的操作:
protected override void OnMouseDown(MouseButtonEventArgs e)
{
var grid = e.OriginalSource as Grid;
if (grid != null && grid.Tag = "yourgridname") e.Handled = false;
}
关于c# - 允许点击和点进,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33303190/