2009-12-02 79 views
1

我需要绘制大量的WPF路径。我已经将它们设置为帆布的孩子。问题在于事件被隧道传递给路径对象。这会降低性能。我知道覆盖预览方法解决了这个问题,但我是否真的必须覆盖所有预览方法..防止WPF事件隧道效应

回答

1

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

0

我找到了解决办法。我将路径对象的IsHitTestVisible属性设置为false。现在他们不会放慢表现。

0

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

在我的情况下,我有一个TabItem与一个PreviewMouseMove事件和一个非常TabItem的按钮与Click事件没有触发。 问题是,如果您在父控件上获得隧道事件(如PreviewMouseMove),它将在其子控件上“覆盖”类似的事件。 一个可能的解决方案 - 为我制定的一个 - 正在挑选不同的冒泡事件,如MouseMove

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

关于这个问题的更多信息here