【问题标题】:Preventing WPF event tunneling防止 WPF 事件隧道
【发布时间】:2010-12-22 09:58:48
【问题描述】:

我需要绘制很多 WPF 路径。我已将它们设置为画布的孩子。问题是事件被隧道化到路径对象。这会减慢性能。我知道覆盖预览方法可以解决问题,但我真的必须覆盖所有预览方法吗..

【问题讨论】:

    标签: wpf events tunneling


    【解决方案1】:

    我认为您可以在 Canvas 中捕获事件并将 e.Handled 设置为 true。

    【讨论】:

      【解决方案2】:

      我找到了解决方案。我将路径对象的 IsHitTestVisible-property 设置为 false。现在它们并没有降低性能。

      【讨论】:

        【解决方案3】:

        不是要复活旧问题,而是,如果有例如按钮而不是路径,将 IsHitTestVisible 设置为 true 是不行的,因为它可以有效地防止 Click 和其他事件。

        在我的例子中,我有一个带有 PreviewMouseMove 事件的 TabItem 和一个带有未触发 Click 事件的 TabItem 上的按钮。 问题是,如果您在父控件上获得 tunneling 事件(如 PreviewMouseMove),它将“覆盖”其子控件上的类似事件。 一种可能的解决方案 - 对我来说很有效 - 选择一个不同的 bubbling 事件,例如 MouseMove

        简而言之,冒泡事件传播到父元素,而隧道事件传播到子元素;还有一些直接事件根本不传播。

        更多关于主题here

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-06-22
          • 1970-01-01
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          相关资源
          最近更新 更多