【问题标题】:Allow clicks and click-through's允许点击和点击
【发布时间】:2015-10-23 13:12:19
【问题描述】:

我有一个Grid 超过一个Button(它们都直接在另一个网格上,但Grid 是“上方”)。我需要订阅Grid 中的某些事件,但仍然可以点击Button。我将GridBackground 设置为Transparent,以使其引发事件,但随后Button 不可点击。有什么办法可以离开IsHitTestVisible = true,但也让点击转到下一个元素?

【问题讨论】:

    标签: c# .net xaml windows-store-apps win-universal-app


    【解决方案1】:

    我先看看是否可以将按钮放在网格上方。您可以在 XAML 中移动它 - 元素声明在 XAML 中越往下,z 顺序就越高。

    如果您绝对不能这样做,您可以重写 UI 元素的 MouseUp 或 MouseDown 方法并控制handled 属性的设置,以允许树中的后续元素进行点击。

    如果您只想将其限制为特定控件,您可以检查“OriginalSource”属性(因为所有这些事件参数都继承自 RoutedEventArgs)以查看点击的来源并采取相应措施:

    protected override void OnMouseDown(MouseButtonEventArgs e)
    {
        var grid = e.OriginalSource as Grid;
        if (grid != null && grid.Tag = "yourgridname") e.Handled = false;
    }
    

    【讨论】:

    • 谢谢。但不幸的是,我需要的正是我所描述的,以便为这个问题提供解决方法:stackoverflow.com/questions/33303617/…。我试图在它到达 ScrollViewer 之前检测 ScrollViewer 的滚动,它上面有一个 Grid。 (这个问题只是对解决方法相关部分的简化。)
    • 我给你的(设置 e.Handled)将允许点击转到它下面的下一个元素...
    • 谢谢。我试过了,但也许做错了什么。我需要再试一次。
    猜你喜欢
    • 1970-01-01
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多