【问题标题】:WPF: Canvas mouse events not firing on empty spaceWPF:画布鼠标事件未在空白处触发
【发布时间】:2022-01-10 05:04:24
【问题描述】:

我在Canvas 上设置了鼠标事件,如下所示:

<Canvas MouseUp="CanvasUp" MouseDown="CanvasDown" MouseMove="CanvasMove">
...
</Canvas>

但这些仅在ImageRectangle 等子元素上有效,而不是在空白空间上。 我该如何解决这个问题?

【问题讨论】:

    标签: wpf xaml canvas


    【解决方案1】:

    没有设置背景颜色(显式或通过样式等)的控件将默认设置为 null 的背景颜色 - 使其不可命中测试。

    如果您将背景设置为“透明”(或任何非 null ({x:Null})),那么它将能够拾取鼠标事件

    【讨论】:

    • 感谢您的回答,但是 WPF 团队对此做出了多么愚蠢的设计决定。
    • 这个建议是金币!我宁愿将 Canvas 背景默认为透明,而不是 {x:null} ,因为您通常希望在单击画布空白区域时触发事件(带有适当的参数)。默认的 x:null 行为应该是可选的,而不是可设置的。
    【解决方案2】:

    设置背景颜色。默认为null

    例如使用Background="White"

    【讨论】:

      猜你喜欢
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-15
      相关资源
      最近更新 更多