c# - 允许点击和点进

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

我在 Button 上有一个 Grid (它们都直接位于另一个网格上,但 Grid 位于“上方”)。我需要订阅Grid中的某些事件,但仍然能够单击Button。我将 GridBackground 设置为 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/

相关文章:

c# - 无法从 'Microsoft.AspNetCore.Mvc.ActionResult' 转换为 'System.Collections.Generic.IEnumerable<string>'

c# - ListBox 中的 WrapPanel 具有水平和垂直滚动功能

c# - 使用 "using"关键字时会处理什么

wpf - ViewModel 构造函数包含 WPF 中的参数

xaml - 绑定(bind)到 ListView 的 SelectedItem 属性时设置初始选定项

c# - 绑定(bind)到 UserControl "Failed to assign to property"错误 (Windows 8)

c# - 在 C# 中测试空值

c# - 试图将从多个函数返回的 "similar looking"元组映射到一个变量

c# - DateTime.TryParseExact() 由于线程的文化信息而失败

c# - WPF TabItem - 图像绑定(bind)