我需要绘制很多WPF路径。我把它们设置为画布的孩子。问题是事件通过隧道传递到路径对象。这会降低性能。我知道重写预览方法可以解决问题,但是我真的必须覆盖所有预览方法..
答案 0 :(得分:1)
我认为您可以在Canvas中捕获事件并将e.Handled设置为true。
答案 1 :(得分:0)
我找到了解决方案。我将路径对象的IsHitTestVisible属性设置为false。现在他们不会降低性能。
答案 2 :(得分:0)
不要复活旧问题但是,如果有例如按钮而不是路径,将IsHitTestVisible设置为true将不会正常,因为它有效地阻止了Click和其他事件。
在我的情况下,我有一个带有 PreviewMouseMove 事件的TabItem和一个非常TabItem上的Button,其中一个Click事件没有触发。 问题是,如果您在父控件上有一个隧道事件(如PreviewMouseMove),它将"覆盖"其子控件上的类似事件。 一个可能的解决方案 - 一个适合我的解决方案 - 正在选择一个不同的冒泡事件,例如 MouseMove 。
简而言之,冒泡事件传播到父元素,而隧道事件传播到子元素;还有直接事件根本不会传播。
有关here主题的更多信息。