3

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

4

3 回答 3

2

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

于 2009-12-02T13:20:23.937 回答
1

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

于 2009-12-07T08:28:05.237 回答
1

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

在我的例子中,我有一个带有PreviewMouseMove事件的 TabItem 和一个带有未触发 Click 事件的 TabItem 上的 Button。问题是,如果您在父控件上获得隧道事件(如 PreviewMouseMove),它将“覆盖”其子控件上的类似事件。一个可能的解决方案 - 对我有用的解决方案 - 是选择一个不同的冒泡事件,比如MouseMove

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

更多关于这里的话题。

于 2017-10-14T20:32:29.533 回答